我有以下几点:
samples.sliding(2).foreach{case List(a, b)=> printf("%x %x\n", a.value, b.value)}
我知道单个“案例”将匹配所有可能的值,但我收到“匹配并非详尽无遗”警告。 Scala 书解释了在正常完全指定的匹配表达式上放置@unchecked 注释的位置,但没有解释上面的形式。如何注释上述内容以阻止编译器提示?
最佳答案
@unchecked
仅为匹配操作中的选择器定义,而不为任意函数定义。所以你可以
foreach{ x => (x: @unchecked) => x match { case List(a,b) => ... } }
但那是一口。
或者,您可以创建一个不安全地将部分函数转换为完整函数的方法(实际上只是转换为
PartialFunction
的函数父类(super class)):def checkless[A,B](pf: PartialFunction[A,B]): A => B = pf: A => B
然后你可以
samples.sliding(2).foreach(checkless{
case List(a,b) => printf("%x %x\n", a.value, b.value)
})
并且您没有任何警告,因为它期待部分功能。
关于Scala:将@unchecked 注释放在foreach 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507419/