【发布时间】:2018-05-03 03:13:46
【问题描述】:
val even: PartialFunction[Int, String] = PartialFunction[Int, String] {
case i if i % 2 == 0 => i + " is even"
}
val isEven: PartialFunction[Int, String] = {
case i if i % 2 == 0 => i + " is even"
}
val odd: PartialFunction[Int, String] = PartialFunction[Int, String] {
case x if x % 2 == 1 => x + " is odd"
}
val isOdd: PartialFunction[Int, String] = {
case x if x % 2 == 1 => x + " is odd"
}
val tot = even orElse odd
val tot2 = isEven orElse isOdd
println(tot(3))
println(tot2(3))
在此代码中,tot 函数抛出匹配错误,而 tot2 函数按预期工作。它们之间的唯一区别是它们的定义方式。任何人都可以解释为什么结果如此不同吗?
提前致谢!!!
【问题讨论】:
标签: scala partialfunction