반응형
"?"가있는 신속한 변수 장식 (물음표) 및 "!" (느낌표)
Swift에서 모든 변수는 값으로 설정되어야하며 선택 사항을 사용하여 nil
초기에 설정할 변수를 설정할 수 있음을 이해 합니다.
내가 이해하지 못하는 것은 a로 변수를 설정하는 것이 무엇을 하는가 !
하는 것입니다. 왜냐하면 이것이 옵션에서 값을 "언 래핑"한다는 인상을 받았기 때문입니다. 그렇게함으로써 해당 변수에 풀릴 값이 있음을 보장한다고 생각했습니다. 이것이 IBActions에서 사용되는 이유입니다.
간단히 말해, 다음과 같이 할 때 초기화되는 변수는 무엇입니까?
var aShape : CAShapeLayer!
그리고 왜 / 언제 이것을할까요?
형식 선언 !
에서는 ?
. 둘 다 선택 사항이지만 !
은 " 암시 적으로 언 래핑 된"선택 사항입니다 . 즉, 값에 액세스하기 위해 래핑 을 풀지 않아도됩니다 (하지만 여전히 nil 일 수 있음).
이것은 기본적으로 우리가 이미 object-c에서 가졌던 행동입니다. 값 은 nil 일 수 있으며 확인해야하지만 선택 사항이 아닌 것처럼 값에 직접 액세스 할 수도 있습니다 (중요한 차이점은 nil을 확인하지 않으면 런타임 오류)
// Cannot be nil
var x: Int = 1
// The type here is not "Int", it's "Optional Int"
var y: Int? = 2
// The type here is "Implicitly Unwrapped Optional Int"
var z: Int! = 3
용법:
// you can add x and z
x + z == 4
// ...but not x and y, because y needs to be unwrapped
x + y // error
// to add x and y you need to do:
x + y!
// but you *should* do this:
if let y_val = y {
x + y_val
}
반응형
'code' 카테고리의 다른 글
파이썬은 int와 long을 어떻게 관리합니까? (0) | 2020.08.15 |
---|---|
여러 awaits보다 단일 'await Task.WhenAll'을 선호해야하는 이유는 무엇입니까? (0) | 2020.08.15 |
"모든 제네릭 유형"정의가있는 C # 제네릭 "where constraint"? (0) | 2020.08.15 |
R을 프로그래밍 언어로 배우는 방법 (0) | 2020.08.15 |
git diff --ignore-space-change를 기본값으로 만드는 방법 (0) | 2020.08.15 |