swift 헷갈리는 문법 총정리.self

Woong·2022년 8월 2일
0
post-custom-banner

1. Swift 문법정리

1.1 Tuple 별칭으로 자료 접근

값의 별칭을 만들어 놓는 경우, myTuple.0 , myTuple.1 이 아닌 이름으로 튜플에 접근 가능하다.

let myTuple = (age : 10, score : 191.3 ,comment : "GoodDev")

print(myTuple.age, myTuple.score , myTuple.comment) // 10 , 191.3 , "GoodDev" 

1.2 forced unwrapping : 2

아래 방법을 forced unwrapping이라고 한다. if let은 다른개념임. (헷갈릴게없나..?)

var x : Int?

if x != nil {
	print(x!)
}else{
	print("nil이에용")

1.3 forced unwrapping : 3. optional binding(if let)

var x : Int?

if let xx = x {
	print(xx)
}else{
	print("nil이에용")

1.4 if let vs guard let

  1. if let 특징 :
  • 성공과 실패 케이스로 나눠 2가지 작업 가능
  • 지역변수로만 활용 가능하다.
  • else문 생략가능
  • 조건을 갖고 나뉘어서 처리하려면 if let이 편리할 것.
  1. guard let 특징 :
  • else문 생략불가능
  • return, break, continue, throw 등의 제어문이 필수다.
  • if let보다 간결함.
  • 함수 전체에서 optional로 추출된 상수나 함수를 활용 할 수 있다.
// if let . : lastName이 Optional타입이므로 if let을 활용하여 바인딩해준다.

func printName (firstName : String, lastName : String?) {
	if let lName = lastName {
    	print(lname,firstName)
    }else{
    	print("성이 없네요")
    }


// guard let . : 조건이 만족하지 않는 경우, else 뒤의 코드가 실행된다.

guard let lName = lastName else {
	print("성이 없네요.")
    return
	}
	print(lName,firstName)
}

printName(firstName : "현웅" , lastName : "서")

1.5 옵셔널은 연관 값을 갖는 enum이다.

우리가 사용하는 Xcode에는 기본적으로 Optional에 관련된 enum이 정의되어 있다.

public enum Optional<Wrapped> {
	case none
    case some(Wrapped)
}
var x : Int? = Optional.some(10)
var y : Int? = Optional.none // print 시, nil 값 반환
var z : Optional<Int> = 30 // print 시, Optional(30) 반환

1.6 다운캐스팅 as? , as!

다운캐스팅은 부모 인스턴스를 자식 클래스로 변환하는데 사용한다.
*성공확신이 있을 경우, as! 를 활용하여 강제 변환 시켜줄 수 있음.
**성공확신이 없을 경우, as? 를 활용하여 안전하게 변환 시켜줄 수 있음.

1.7 타입검사 is

is를 활용하면지정된 객체가 MyClass라는 이름의 클래스의 인스턴스인지 검사할 수 있다.

class MyClass { }
var x : MyClass = MyClass()

if x is MyClass{
	print("Yes, x is MyClass Instance.")
}

1.8 삼항연산자 ?:

비교연산을 빠르게 하기위해서 사용할 수 있으며, if else 대용으로 사용 할 수 있다.

var x = 1
var y = 2

print("Largest number is \( x > y ? x : y)")
// Largest number is 2

1.9 nil병합연산자

앞에 항이 nil값을 갖는다면, 뒤에 있는 항을 출력시킨다.

let defaultColor = "black"
var userDefinedColor : String?

var myColor = userDefinedColor ?? defaultColor

print(myColor) // black이 출력됨.

1.10 for-in문 _로 참조체(i) 생략하는 법

진짜 다섯번 출력됨.

for _ in 1...5 {
	print("안녕 난 다섯번 출력될래.")
}

// 꼭 아래랑 같이 쓸 필요없음.
for i in 1...5 {
	print("\(i) 안녕")
}
profile
https://github.com/iOS-Woong
post-custom-banner

0개의 댓글