Ala*_*son 3 foreach scala unchecked
我有以下内容:
samples.sliding(2).foreach{case List(a, b)=> printf("%x %x\n", a.value, b.value)}
Run Code Online (Sandbox Code Playgroud)
我知道单个'case'将匹配所有可能的值,但我得到'匹配并非详尽'的警告.Scala书中解释了将@unchecked注释放在正常的完全指定的匹配表达式上的位置,但不适用于上面的表单.如何注释上面的内容以阻止编译器抱怨?
Rex*_*err 10
@unchecked是只用于在匹配操作选择器,而不是任意的功能来定义的.所以你可以
foreach{ x => (x: @unchecked) => x match { case List(a,b) => ... } }
Run Code Online (Sandbox Code Playgroud)
但那是一口气.
或者,您可以创建一个方法,将部分函数不安全地转换为完整的函数(实际上只是强制转换为函数超类PartialFunction):
def checkless[A,B](pf: PartialFunction[A,B]): A => B = pf: A => B
Run Code Online (Sandbox Code Playgroud)
然后你就可以了
samples.sliding(2).foreach(checkless{
case List(a,b) => printf("%x %x\n", a.value, b.value)
})
Run Code Online (Sandbox Code Playgroud)
并且你没有任何警告,因为它期待部分功能.
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |