我正在尝试从运行时值创建部分函数,然后像这样组合部分函数:
class Test(val function: PartialFunction[Int, Boolean]) {
def add(v: Int): Test = {
new Test(function.orElse{case v => true})
}
def contains(v: Int) = function.isDefinedAt(v)
}
val test: Test = new Test({case 1 => true})
val test2 = test.add(2)
println(test2.contains(1))
println(test2.contains(2))
println(test2.contains(3))
Run Code Online (Sandbox Code Playgroud)
此代码打印
true
true
true
Run Code Online (Sandbox Code Playgroud)
但最后一行应该是假的。为什么会这样?我做错了什么?
{ case v => true }永远是一场比赛。您想测试 的值v:
new Test(function.orElse{case `v` => true})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |