小编mic*_*del的帖子

如何只从scala中映射左值?

考虑一下代码:

val some: OneCaseClass Either TwoCaseClass = ???
val r = some.left.map(_.toString)
Run Code Online (Sandbox Code Playgroud)

为什么r是Serializable with Product with Either[String, TwoCaseClass]类型而不是Either[String, TwoCaseClass]

如何只映射左值?

scala either

11
推荐指数
1
解决办法
6202
查看次数

Java泛型,紧密有界参数类型

我希望有一种方法具有类似于method(T1 t1, T2 t2) T2是-T1和/或T1是-T2 的签名 .我不希望T1和T2都是T的情况,但两者都不是 - 另一个.我希望最允许的类型在继承树中以T1或T2的最高值为界.我使用的是Java 6.

下面是尝试显示一些所需的用例

class Experiment
{
  static List genericList = new ArrayList();
  static ArrayList arrayList = new ArrayList();

  static class Test1 { }
  static class Test2 extends Test1 { }
  static class Test3 extends Test1 { }

  static <T> T experiment0(T expected, T actual)
  {
    return actual;
  }

  /** Almost works, but want arbitrary ordering. Cannot overload due to erasure. */
  static <T, S extends T> S experiment1(T expected, S actual) …
Run Code Online (Sandbox Code Playgroud)

java generics static-typing templating

9
推荐指数
1
解决办法
208
查看次数

使用Jacoco插件的build.gradle不会为集成测试生成覆盖率报告

我有一个build.gradle文件,可以单独或一起成功运行单元和集成测试(使用gradle test integrationTest等命令).两者都使用Junit,我使用的是Gradle 3,这不是Android项目.在不同的目录中为每个成功生成一份报告.我还可以使用gradle test jacoco成功生成Jacoco报告以进行单元测试覆盖.我无法通过使用gradle integrationTest jacoco获取我的其他工作集成测试的覆盖率报告,尽管测试成功运行并生成了integrationTest.exec文件.

为了更明确,我在build/reports/index.html中获得了单元测试覆盖率报告,在build/reports/test/index.html和build/reports/integrationTest/index.html中获得了Junit报告.创建了build/reports/jacoco目录,但只包含一个空的"test"目录.build /还包含一个jacoco /目录,其中包含.exec文件和classpathdumps.

这是我的缩写build.gradle

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'jacoco'

repositories {
    mavenCentral()
}

sourceSets {
    main {
        java {
            srcDirs = ['src/java']
        }
        test {
            java {
                srcDirs = ['test/java']
            }
        }
        resources {
            srcDirs = ['src/java', 'conf', 'resource']
        }
    }

    integrationTest {
        java {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir file('integration_test/java')
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

java testing junit gradle jacoco

7
推荐指数
1
解决办法
2353
查看次数

如何动态使用Python的类型提示来指示返回值与参数类型相同

我正在使用 Python 从磁盘读取 JSON,并且我试图确保我的类型提示在下游是正确的。例如,这样的事情:

from typing import List

def verify_contains_ints(items: List[object]) -> List[int]:
    for item in items:
        if not isinstance(item, int):
            raise TypeError("List contents must be all ints")
    return items
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不想为 int、bool、str 等编写单独的函数。有没有办法动态指定我想要验证的类型?我想写的这样的:

from typing import List

def verify_contains_type(items: List[object], inner_type = object) -> List[inner_type]:
    for item in items:
        if not isinstance(item, inner_type):
            raise TypeError(f"List contents must be all {inner_type}s")
    return items
Run Code Online (Sandbox Code Playgroud)

在类型提示的当前状态下有没有办法做到这一点?

注意:这是我实际尝试做的事情的简化版本。默认的 inner_type 在这里可能看起来很愚蠢,但它对我的用例很重要。

python typing type-hinting

5
推荐指数
1
解决办法
5222
查看次数