Как и другие плакаты комментировали, вы должны выразить это в идиоматических Scala:
scala> Some(1) filter (_ > 2) map (_ => 3) getOrElse 4
res0: Int = 4
scala> Some(1) filter (_ < 2) map (_ => 3) getOrElse 4
res1: Int = 3
(Бека использование твитов о грамматике, перемещение этого из ML :)
Colon - это вид взятого. Это трибула с тем, что вы пытаетесь.
Я думаю, что трибуны должны быть произнесены как триббл.
package tribool
object Test extends App {
class TriBool[A](b: Boolean, a: =>A) {
def getOrElse[B >: A](other: =>B): B = this := other
def :=[B >: A](other: =>B) = if (b) a else other
}
// enhance Boolean with ?
implicit class TriBool_?(val b: Boolean) extends AnyVal {
def ?[A](a: =>A): TriBool[A] = new TriBool(b, a)
}
val s = (2 > 1) ? "higher" := "lower"
Console println s
def c = { println("eval c"); true }
def a = { println("eval a"); "yes" }
def b = { println("eval b"); "no" }
Console println (c ? a := b)
Console println (!c ? a := b)
}
'val s = (1> 2)? 3: 4; 'C++ ??? оо ??? – 4lex1v
@AlexIv 'int s = (1> 2)? 3: 4; '[будет очевидно работать] (http://codepad.org/B3WzZZ75). Идея состоит в том, чтобы использовать тройной if (и это просто пример, если я правильно понимаю). –
Scala уже имеет условные выражения. Пожалуйста, обратитесь к языковой спецификации: http://iainmcgin.github.io/scala-ref-markdown/#conditional-expressions – folone