클로저와 함수가 같은 것이라고 생각했습니다. 그러나 로컬 함수 컴파일러 내부의 속성을 참조 할 때 자체를 요구하지는 않습니다. 그러나 내부 종결은 자필을 써야합니다. 왜이 두 가지가 다른가요? 선명도왜 컴파일러는 클로저와 로컬 함수를 다르게 처리합니까?
샘플 코드는 : closure
는 인스턴스 속성에 액세스 만의 그것에 대해 생각하게하는 신속한에서 자기가 필요한 이유를 실제로
class Foo {
let bar = "bar"
func baz() {
func localBaz() {
println(bar) // No complain from compiler.
}
let bazClosure = {
println(self.bar) // Here if I write just println(bar), compiler complains.
}
}
}
당신은 그들이 같은 것이 아니다 맞다합니다. Apple의 신속한 책에서 "기능에 도입 된 전역 및 중첩 기능은 실제로 클로저의 특수한 경우입니다." 그러나 지금까지 나는이 우주적인 사건이 무엇인지 알지 못했다. 유용한 정보를 가져 주셔서 감사합니다. – mustafa
공평하게 말하자면, 저는 이것들이 * 똑같은 것을 보여주기 위해서라고 생각합니다. 그리고 func은 클로저 표현식을 이름에 바인딩하는 것의 축약이고, '. –