scala – 为什么null.asInstanceOf []失败?
发布时间:2020-12-16 19:25:02 所属栏目:安全 来源:网络整理
导读:是否有任何逻辑上的原因为null.asInstanceOf [某些CPS注释类型]无法编译? 有关上下文,请参阅this github issue thread. 解决方法 我想知道scala 2.9版本是否正在做正确的事情,即使它编译(我会尝试当我有机会).无论如何,在2.10.0中这个编译和工作: import s
是否有任何逻辑上的原因为null.asInstanceOf [<某些CPS注释类型>]无法编译?
有关上下文,请参阅this github issue thread. 解决方法
我想知道scala 2.9版本是否正在做正确的事情,即使它编译(我会尝试当我有机会).无论如何,在2.10.0中这个编译和工作:
import scala.util.continuations._ object NullCPS extends App { def f[A,C] = shiftUnit[A,C,C](null.asInstanceOf[A]) println(reset{"got " + f[Object,String]}) // prints: got null println(reset{"got " + f[Int,String]}) // got 0 println(reset{"got " + f[Boolean,String]}) // got false } shitUnit [A,B,C]是来自continuations package的库方法,它使用类型A的值来创建一个简单的ControlContext [A,C],期望由A =>类型的继续k使用返回类型C的结果 在上面的例子“got”f [Object,String]中,continuation插件进一步用(x:Object)=>组成了普通的null值. “得到”x功能. 继续到context of the question,我看不出Defaultable [T]如何代表T @ cps [U],因为它只有一个类型参数.但是如果你增强了违约: import scala.util.continuations._ trait DefCPS[A,C] { def default: A@cps[C] } object NullCPS extends App { implicit def defaultCPS[A,C] = new DefCPS[A,C] { def default: A@cps[C] = shiftUnit[A,C](null.asInstanceOf[A]) } println(reset{"got " + implicitly[DefCPS[Object,String]].default}) println(reset{"got " + implicitly[DefCPS[Int,String]].default}) println(reset{"got " + implicitly[DefCPS[Boolean,String]].default}) } // prints got null // got 0 // got false 注意:我必须使特性使用def而不是val,否则它将无法编译.我也试过实现A @ cpsParam [B,但是没能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap模态.使用Jquery动态包含图像
- Bootstrap中的弹出框插件popover.js中的参数title、content
- 三、axis1取消发布的WebService(删除一个发布成功的Web服务
- angularjs – Angular-ui-bootstrap – 日期选择器 – 如何
- 角度 – 离子选择Ionic 2中的动态选项?
- [Bootstrap] Interface Builder
- 在树莓PI上运行 Apache 服务器
- shell – Bamboo – 在任务/脚本之间传递环境变量
- Hom Functor和Scala的Function1的逆变之间有什么联系吗?
- IdeaVim和俄罗斯布局