2017-03-05 27 views
1

None은 Python에서 값이 없음을 나타내는 데 사용됩니다.Scala에서 None을 사용하는 경우

예를 들어, 연결리스트에 대한 노드 클래스 :

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

스칼라에서이 작업을 수행 할 수있는 방법이 있나요? 나는 null을 시도했지만 일부 출처는 그 사용법에 대해 조언했다.

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

답변

9

스칼라하지만 스칼라의 동일 때문에 결석 할 수있는 값 유형을 가지고 있으며, 입력 된 나는 또한 var 좋은 사용 생각하지 않는 사실 Option[T]

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

2

Scala에서 연습하기. 아마도 당신은 변경/수정을 피하기 위해 다른 방법으로 Node을 정의/초기화 할 수 있습니다.

그러나 코드를 Python 코드와 비슷하게 유지하려면 new_next_node에 대해 null이 적합합니다. 그리고 new_data은 박스형 Integer 대신 Int 유형으로 일부 기본값으로 초기화 할 수 있습니다. 경우에 따라 new_data을 초기화해야한다면 value: Option[Int] = None을 사용하는 것이 더 좋습니다. @Sleiman Jneidi의 대답이 제안했습니다.

여전히 파이썬에서 if a is None과 같은 체크는 pythonic입니다. 그러나 Option 유형에 대해 if a.isDefined을 확인하는 것은 매우 scalaistic이 아닙니다.

관련 문제