code

"?"가있는 신속한 변수 장식

codestyles 2020. 8. 15. 09:16
반응형

"?"가있는 신속한 변수 장식 (물음표) 및 "!" (느낌표)


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
}

참고 URL : https://stackoverflow.com/questions/24122601/swift-variable-decorations-with-question-mark-and-exclamation-mark

반응형