小编Dun*_*gor的帖子

我什么时候应该在Scala中选择Vector?

似乎VectorScala收集派对迟到了,所有有影响力的博客帖子已经离开了.

在Java中ArrayList是默认的集合 - 我可能会使用,LinkedList但只有当我通过算法并且足够小心地进行优化时才会使用.在Scala中,我应该使用Vector我的默认设置Seq,还是尝试在List实际上更合适时使用?

scala vector scala-collections

186
推荐指数
4
解决办法
5万
查看次数

一个尊重ANSI颜色代码的Eclipse控制台视图?

ScalaTest的输出是彩色的,以区分不同的状态,但这些最终作为控制代码和

[34m Annoying garbage 
Run Code Online (Sandbox Code Playgroud)

有没有办法说服Eclipse控制台尊重或忽略这些序列,或插入一个视图?

eclipse console ansi

71
推荐指数
4
解决办法
3万
查看次数

我们可以从Scala 2.10获得哪些反射功能?

Scala 2.10带来了除了提供JVM(或者我猜CLR)之外的反射.

我们还有什么特别值得期待的,它将如何在平台上得到改善?

例如,是否会有一个类反映语言在字段和访问器方法之间的可转换性,以便我可以迭代对象的属性?

reflection scala

31
推荐指数
3
解决办法
3611
查看次数

我可以在Scala中创建一个具有Java保护访问权限的方法吗?

我有一个Java类,我已经移植到Scala,但仍然有一些Java子类实现抽象功能.

最初的Java有

public abstract class Base {
    ...
    protected abstract Foo getFoo();
}
Run Code Online (Sandbox Code Playgroud)

这被延长了

public class Fred extends Base {
    ...
    protected Foo getFoo() {
        return foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我将Base移植到Scala

class Base {
    ...
    protected def getFoo(): Foo
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨说

无法降低继承方法的可见性......


现在我明白了,因为它的规则略有不同,Scala倾向于在编译器中强制实现可见性而不是字节码,因此getFoo在javap类中被标记为public.但

protected[packagename] def getFoo()
Run Code Online (Sandbox Code Playgroud)

仍然没有生成pukka(Java)保护方法,虽然我认为可见性应该是相同的.

有没有办法说服Scala编译器发出一个Java会认为受保护的方法?

visibility scala protected

26
推荐指数
1
解决办法
915
查看次数

有没有办法为Kotlin顶级函数引用Java类?

我想使用顶层函数加载资源Class.getResourceAsStream().

有没有办法获得对顶层函数将被编译成的类的引用,以便我可以编写,例如

val myThing = readFromStream(MYCLASS.getResourceAsStream(...))
Run Code Online (Sandbox Code Playgroud)

java kotlin

18
推荐指数
4
解决办法
1655
查看次数

如何将Kotlin扩展函数参数约束为与扩展类型相同?

我想在泛型类型T上编写扩展方法,其中匹配类型约束方法参数.

我希望这个编译:

"Hello".thing("world")
Run Code Online (Sandbox Code Playgroud)

但不是这个,因为42不是字符串:

"Hello".thing(42)
Run Code Online (Sandbox Code Playgroud)

这个定义不起作用,因为T满足 Any

fun <T> T.thing(p: T) {}
Run Code Online (Sandbox Code Playgroud)

generics kotlin

18
推荐指数
3
解决办法
868
查看次数

是否有任何基准测试将Java 8 Streams与Guava Iterables进行比较?

我对Java 8上的Guava感到非常满意 - 在向Streams迁移顺序代码时是否有任何性能优势或陷阱?

java performance guava java-8

16
推荐指数
1
解决办法
1262
查看次数

如何掌握Scala Future中抛出的异常?

我一直在努力回答是否有一个标准的Scala函数用于运行超时的块?,如果在Future中抛出异常,则会遇到问题.

  def runWithTimeout[T](timeoutMs: Long)(f: => T) : Option[T] = {
    awaitAll(timeoutMs, future(f)).head.asInstanceOf[Option[T]]
  }
Run Code Online (Sandbox Code Playgroud)

以便

runWithTimeout(50) { "result" } should equal (Some("result"))
runWithTimeout(50) { Thread.sleep(100); "result" } should equal (None)
Run Code Online (Sandbox Code Playgroud)

但是如果我在我的块中抛出一个异常它不会泄漏,但是被吞下 - 所以下面的代码失败了"..没有抛出异常"

intercept[Exception] {
    runWithTimeout(50) { throw new Exception("deliberate") }
}.getMessage should equal("deliberate")
Run Code Online (Sandbox Code Playgroud)

Syserr有一条带有消息的堆栈跟踪

<function0>: caught java.lang.Exception: deliberate
Run Code Online (Sandbox Code Playgroud)

但我无法找到Scala运行时中打印的位置.

除了在另一个块中包装f以捕获异常并在抛出时传播它们,有没有办法说服awaitAll和/或Future抛出?

concurrency scala exception-handling actor

15
推荐指数
2
解决办法
1万
查看次数

什么是Java Stream.collect的Kotlin等价物?

如果我想将我的Kotlin集合收集到stdlib中没有内置的东西,我该怎么做?

collections kotlin

15
推荐指数
2
解决办法
6345
查看次数

如何在Java中实现通用的`max(Comparable a,Comparable b)`函数?

我正在尝试编写一个需要两个Comparables 的泛型max函数.

到目前为止我有

public static <T extends Comparable<?>> T max(T a, T b) {
    if (a == null) {
        if (b == null) return a;
        else return b;
    }
    if (b == null)
        return a;
    return a.compareTo(b) > 0 ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

这无法编译

The method compareTo(capture#5-of ?) in the type Comparable<capture#5-of ?> is not applicable for the arguments (T)
Run Code Online (Sandbox Code Playgroud)

我认为这是说,?in Comparable<?>可以被解释为参数a的一种类型,而参数b的另一种类型,因此它们无法进行比较.

我如何从这个洞中挖掘自己?

java generics comparable

14
推荐指数
1
解决办法
1万
查看次数