创造新的控制结构——问号表达式 “? :”
Scala的英文意思是“可伸展的”。Scala之所以叫这个名,就是取意这个语言是“可伸展的语言”。他的可伸展性表现在很多方面。今天主要总结一下他在创造新的控制结构方面的能力。
语言内置的控制结构有:for,if...else,while等,在Scala里,你完全可以写出自己的控制结构,让它感觉像是语言本身就支持一样。先把示例抛出来——Scala里没有Java、C++里的问号表达式 ? : ,下面我们自己如何来给Scala里引入这个控制结构,代码如下:
object work {
implicit class Condition(p: Boolean) {
def ?[A] (first: A): Selection[A] = new Selection(p, first)
}
class Selection[A](p: Boolean, first: A) {
def | (second: A): A = p match {
case true => first
case _ => second
}
}
}
测试一下:
println( (1 > 0) ? "good" | "bad")
// > good
看看 (1 > 0) ? "good" | "ba