等价于 Scala 中的 None

Equivalent of None in Scala

None用于表示Python中没有值。

例如链表的节点class:

class Node:
    def __init__(self, data=None, next_node=None):
        self.data = data
        self.next_node = next_node

在 Scala 中有没有办法做到这一点?我试过 null 但一些消息来源建议不要使用它。

class Node(new_data: Integer = null, new_next_node: Node = null) {
        var data = new_data
        var next_node = new_next_node

在 Scala 中相同,但 Scala 是类型化的,因​​此可能不存在的值必须具有 Option[T]

类型

case class Node(value: Option[Int] = None, node: Option[Node] = None)

事实上我也不认为在 Scala 中使用 var 是好的做法。也许您可以 define/initialize Node 以其他方式避免可变性。

但是如果您想让代码与 Python 代码尽可能相似,那么 null 至少对于 new_next_node 来说是可以的。 new_data 可以用 Int 类型初始化为一些默认值,而不是使用盒装的 Integer;如果 new_data 应该按案例初始化,最好使用 value: Option[Int] = None 正如@Sleiman Jneidi 的回答所建议的那样。

不过,请记住,在 Python 中,检查 if a is Nonepythonic;然而检查 if a.isDefinedOption 类型并不完全 scalaistic.