当前位置:  开发笔记 > 编程语言 > 正文

模式匹配scala中的零参数函数:通过警告神秘化

如何解决《模式匹配scala中的零参数函数:通过警告神秘化》经验,为你挑选了1个好方法。

我正在玩scala的分布式演员.非常好.

我有一个执行传入函数对象的服务器.例如,客户端有

object Tasks {
  def foo = {Console.println("I am Foo")};
  def bar = {Console.println("I am Bar");}
}

// In client actor...
...
  server ! Tasks.foo _
...

服务器可以选择这些并使用actor代码执行它们

react {
  case task:(()=>Unit) =>
    task()

这一切都运行得很好(确实非常非常酷)但我scalac对服务器代码输出的警告消息感到困惑:

warning: non variable type-argument Unit in type pattern is unchecked since it is eliminated by erasure
        case task:(()=>Unit) =>
                     ^

我该如何清除此警告?

(我上的区别不太清楚Unit类型,以及()=>Unit零参数的函数类型.只是想匹配task:Unitreact是警告,免费的,但实际上是不匹配传入的任务.)

使用Sun的Java6在Debian上使用Scala 2.7.5.



1> Mitch Blevin..:

你真的很喜欢这个:

case task:Function0[Unit] => task()

由于擦除,Unit在运行时不可见.如果您真的不关心返回类型,可以在react块中执行此操作:

case task:Function0[_] => task()

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有