내일배움캠프 2일차! Unwrap 옵셔널 변수

jimmy·2024년 2월 27일
0
post-custom-banner

알고리즘 1일 1문제 이상 풀기

-두 수의 차
-두 수의 곱
-몫 구하기
-나이 출력
-숫자 비교하기
-두 수의 합
-두 수의 나눗셈
-각도기
	Adjacent operators are in non-associative precedence group 에러
    	원인 : 비교연산자 두 개를 사용했기 때문에 우선순위로 오류 생김
    	해결 방법 : 연산자를 하나만 써도 됨
    Missing return in global function expected to return 'Int' 에러
    	원인 : 함수가 리턴을 하지 않아서
        해결 방법 : if, else if 조건에 맞지 않을 경우 리턴 값이 없기 때문에 else를 추가
=> 쉽게 생각하자!

Unwrap 옵셔널변수

옵셔널 : 값이 있을 수도 없을 수도 있는 상태를 나타내는 타입
-자료형 뒤에 ?를 붙여서 나타냄

//값이 비었다. 아직 값을 설정하지 않은 상태
var someVariable : Int? = nil
//값이 비어있다면 변수에 값을 넣는다.
if someVariable == nil {
	someVariable = 10
}
print("someVariable : \(someVariable)")
>>> someVariable : Optional(10)

위에서 var someVariable : Int? = nil와 var someVariable : Int?의 차이가 궁금했는데 결론은 같은 의미이다!

만약 상수 값이 비어있을 경우(nil), 기본값으로 넣고 싶은 값이 있으면 ?? 를 적음

someVariable = nil
let myValue = somevariable ?? 20
print("myValue : \(myValue)")
>>>>myValue : 20

Unwrapping 방법 1

//변수에 값이 비어있는지 확인한다.
if let otherVariable = someVariable {
	print("언래핑 되었다=값이 있다. otherVariable : \(otherVariable)")
} else {
	print("값이 없다.")
}
>>> 언래핑 되었다=값이 있다. otherVariable : 20

Unwrapping 방법 2
-guard 활용

var firstValue : Int? = 30
var secondValue : Int? = 50
func unwrap(parameter : Int?) {
	print("unwrap() called")
    //값이 없으면 리턴
    //즉 지나감
    guard let unWrappedParam = parameter else {
    	return
    }
    print("unWrappedParam : \(unWrappedParam)")
}
unwrap(parameter : firstValue)
unwrap(parameter : secondValue)
>>> unwrap() called
	 unWrappedParam : 30
     unWrappedParam : 50

위에서 unwrap(parameter : firstValue), unwrap(parameter : secondValue)을 unwrap(firstValue), unwrap(secondValue)로 간략하게 쓰고 싶다면
func unwrap(parameter : Int?)처럼 parameter앞에 를 붙이면 됨

profile
iOS developer
post-custom-banner

0개의 댓글