2014-10-10 10 views
2

빈 튜플()이 Swift에서 값 부재를 나타내는 데 사용되는 것으로 나타났습니다. 예를 들어, 아무 것도 반환하지 않는 함수의 서명은 다음과 같습니다Swift에서 nil과() 사이의 차이

func zz(){ 
    println("zz") 
} 

컴파일러는 위의 기능이 몸을 받아 들일 것입니다 :

func zz(){ 
    println("zap") 
    return() // returning() and returning nothing is the same thing! 
} 

것이 함수를 정의의 동등한 방법 :

,321 :

func zz() ->(){ 
    println("zap") 
    return() 
} 

(가) 무효라고 위해 심지어 typealias있다 0

빈 튜플이 Swift에서 값이없는 경우 nil과의 관계는 무엇입니까? 왜 두 개념이 모두 필요합니까?()의 측면에서 방어가되지 않습니까?

답변

6

nilOptional에 지정할 수있는 특별한 값으로 옵션에 값이 없음을 의미합니다. nil은 실제로 값이없는 것은 아니며 적절한 값이 없음을 의미하는 특수 값입니다.

()은 선택 항목조차도 반환되지 않거나 전달되지 않음을 의미합니다. 반환 가치가 없으며 앞으로있을 수 없습니다. 반환 값이 nil이 아닌 다른 것에는 할당 할 수 없습니다. 후자의 기능 장애의 일종을 나타낼 NULL의 리턴 값을 사용하는 경우

상황

void foo(void); 

SomeType* bar(void); 

(C)에서의 차이와 유사하다. 즉

someVariable = foo(); // Illegal 

someVariable = bar(); // Not illegal 
if (someVariable != NULL) { ... } 
1

nil은 값이 없음, ()은 0 요소가있는 튜플입니다. 개념적으로 nil과 빈 배열을 비교하는 것과 같습니다. 빈 배열은 값이없는 것이 아닙니다.

그들은 단순히 서로 다른 2 개의 관련이없는 것입니다.

그냥 놀이터에서 이것을 시도 : 오류가 발생

var x: Int? 
x =() // <==() is not convertible to Int 

합니다.