在Scala中,"?"符号(问号)代表一个可选值。它用于表示一个可能为null的值或者不存在的值。通过使用"?"符号,可以避免空指针异常,并提供一种简洁的方式来处理可能为空的情况。

14 浏览
0 Comments

在Scala中,"?"符号(问号)代表一个可选值。它用于表示一个可能为null的值或者不存在的值。通过使用"?"符号,可以避免空指针异常,并提供一种简洁的方式来处理可能为空的情况。

我遇到了一些使用"?"的Scala代码,但不知道在Scala中它的意思是什么,有人可以解释一下吗?谢谢。

下面是一个例子:

 def getJobId(conf: Configuration): String =
    ?(conf.get("scoobi.jobid")).getOrElse(sys.error("Scoobi job id not set."))

0
0 Comments

在Scala中,"?"符号(问号)的含义是什么?

这个问题的出现原因是代码中有一条导入语句,导入了Option的apply方法并将其重命名为"?":

import Option.{apply => ?}

根据Option.apply的文档:

一个Option工厂,如果参数不为null,则创建Some(x);如果参数为null,则创建None。

整个语句的意思是:

如果conf.get("scoobi.jobid")不等于null,则将该字符串赋值给变量;否则将字符串"sys.error("Scoobi job id not set.")"赋值给变量。

谢谢,你是对的。之前有一条导入语句"import Option.{apply => ?}"。

0
0 Comments

在Scala中,"?"符号只是一个合法的字符,就像"abcd..."一样。它可以被用作标识符的一部分,可以用在函数名或变量名中。

以下是一个示例,展示了如何在Scala中使用"?"符号:

scala> def ?(i: Int) = i > 2
$qmark: (i: Int)Boolean
scala> val a_? = ?(3)
a_?: Boolean = true

在这个示例中,我们定义了一个名为"?"的函数,它接受一个Int类型的参数并返回一个Boolean类型的值。我们还创建了一个名为"a_?"的变量,它的值是调用"?"函数并传入参数3后的结果,即true。

通过这个示例,我们可以看到在Scala中,"?"符号可以被用作标识符的一部分,并且可以像其他标识符一样被使用。

值得注意的是,"?"符号也可以用作函数、方法或具有"apply"方法的对象。在这种情况下,它可能返回一个Option[String]类型的值。

如果你想了解更多关于Scala中合法的标识符字符的信息,你可以参考以下链接:

- [Valid identifier characters in Scala](https://stackoverflow.com/questions/7656937/7657692#7657692)

- [Scala method and values names](https://stackoverflow.com/questions/8629478)

0