gpt4 book ai didi

Scala:将@unchecked 注释放在foreach 中的位置

转载 作者:行者123 更新时间:2023-12-01 09:34:41 25 4
gpt4 key购买 nike

我有以下几点:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com