2014-09-04 1 views
5

이 코드를 실행하면 변수 f가 함수 f를 음영 처리하는 것처럼 보입니다. 어쨌든 함수 f에 도달 할 수 있습니까?Swift에서 함수 및 변수의 네임 스페이스

func f (a:Int)->Int{ 
    return a + 43 
} 

var f = {(a:Int) in a + 42} 

var z = f(1) 
println(z) 
+0

왜 그렇게하려고합니까? 별칭은 같은 이름의 이름입니다. –

+4

방법이 있다고 나는 믿지 않으며 컴파일러의 결함이라고 생각합니다. 이것은 오류가되어야합니다. 그것에 관해 레이더를 열 것을 권한다. 흥미로운 점은 먼저 선언 된 것이 중요하지 않다는 것입니다. var는 항상 승리합니다. –

+0

레이더를 추가하겠습니다. – cfischer

답변

1

번호 스위프트에서

는 함수 선언은 단순히 당신이 폐쇄 + 변수 일에 무엇을했는지에 대한 바로 가기입니다. 즉, 함수 이름은 본질적으로 상수이며, 항상 그러한 것으로 간주되어야합니다 (참조로 괄호없이 함수 이름을 전달할 수도 있습니다).

당신이하고있는 일은 변수 클로저에 이름 f를 재 선언하는 것입니다. Swift는이 문제에 대해 불평하지 않는 컴파일러 문제를 가지고있는 것 같습니다. 그러나이 문제는 좋은 코드에서는 발생하지 않으므로 실제 문제는 아닙니다.

다소 혼란 스러울 수 있습니다.