【发布时间】:2015-01-11 08:59:00
【问题描述】:
我最近经常使用 scala 三元运算符的这种实现,尤其是在切换启用/禁用图像时,但是,我通常可以理解我发现的代码 sn-ps,这让我感到困惑。我还想稍微修改它以更好地满足我的需要。我喜欢运算符式语法而不是冗长的 if else 阻塞等。
implicit def BooleanBool(b: Boolean): Bool = Bool(b)
case class Bool(b: Boolean) {
def ?[X](t: => X) = new {
def |(f: => X) = if (b) t else f
}
}
所以我理解隐式创建了一个 Bool 对象,用 ?作为一个函数。该函数必须返回 X 类型的值。其余的我很难理解。
这是我的问题:
- 嵌套函数如何工作?的|功能。
- 代码实际解析的顺序是什么?
- 如何更改它以便可以选择不包含 else 子句?例如。是天蓝()? goOutside()
-
嵌套三元运算符是否有缺点,例如:
isTheSkyBlue() ? goOutside() | { isTheInternetOn() ? playVideoGame() | read() } -
可以将嵌套更改为类似于 case 语句。即使用 => 运算符或类似的。例如。
isTheSkyBlue() ? goOutside() | => isTheInternetOn() ? playVideoGame() | read()甚至一起摆脱它
isTheSkyBlue() ? goOutside() | isTheInternetOn() ? playVideoGame() | read()
【问题讨论】: