等价于 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 None
是 pythonic;然而检查 if a.isDefined
与 Option
类型并不完全 scalaistic.
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 None
是 pythonic;然而检查 if a.isDefined
与 Option
类型并不完全 scalaistic.