为什么不提供操作员?: 在 scala 中 [已关闭]
2022-09-03 08:20:05
Java中有一个运算符可用于根据布尔表达式选择值。例如,表达式将返回一个字符串 。我知道我们可以用表达来做到这一点,但我更喜欢这种风格,因为它简洁而优雅。? :
3 > 2 ? "true" : false
"true"
if
Java中有一个运算符可用于根据布尔表达式选择值。例如,表达式将返回一个字符串 。我知道我们可以用表达来做到这一点,但我更喜欢这种风格,因为它简洁而优雅。? :
3 > 2 ? "true" : false
"true"
if
在Java中,和之间有一个区别,那就是它是一个语句,而它是一个表达式。在Scala中,它也是一个表达式:它返回一个值,例如,您可以将其分配给变量。if
? :
if
? :
if
Scala中的Java比Java中的Java更像:if
? :
if
// In Scala 'if' returns a value that can be assigned to a variable
val result = if (3 > 2) "yes" else "no"
你不能在Java中这样做:
// Illegal in Java, because 'if' is a statement, not an expression
String result = if (3 > 2) "yes" else "no"
因此,在 Scala 中确实没有必要,因为它将与 完全相同,但具有替代(更晦涩的)语法。? :
if
为了补充@Jesper所说的,如果你发现 - 太冗长,Scalaz提供了两个更简洁的替代方案:一个三元布尔运算符(,)一个类似C的语言和函数。if
else
?
|
fold
scala> import scalaz._
import scalaz._
scala> import Scalaz._
import Scalaz._
scala> (3 > 2) ? "True" | "False"
res59: java.lang.String = True
scala> (3 > 2).fold("True", "False")
res60: java.lang.String = True