相关疑难解决方法(0)

为什么结构化类型的编译时生成技术会阻止单独编译?

我正在阅读(好的,略读)Dubochet和Odersky 在JVM上编译结构类型,并对以下声明感到困惑:

生成技术创建Java接口以代表JVM上的结构类型.这种技术的复杂性在于,在程序中任何地方用作结构类型的所有类都必须实现正确的接口.在编译时完成此操作时,它会阻止单独编译.

(重点补充)

考虑论文中的autoclose示例:

type Closeable = Any { def close(): Unit }

def autoclose(t: Closeable)(run: Closeable => Unit): Unit = {
   try { run(t) }
   finally { t.close }
}
Run Code Online (Sandbox Code Playgroud)

我们无法为该Closeable类型生成如下接口:

public interface AnonymousInterface1 {
   public void close();
}
Run Code Online (Sandbox Code Playgroud)

并将我们的定义转换autoclose

// UPDATE: using a view bound here, so implicit conversion is applied on-demand
def autoclose[T <% AnonymousInterface1](t: T)(run: T => Unit): Unit = {
   try { run(t) }
   finally { t.close } …
Run Code Online (Sandbox Code Playgroud)

scala structural-typing

3
推荐指数
1
解决办法
292
查看次数

标签 统计

scala ×1

structural-typing ×1