[Swift] 놓치고 있던 기초 문법 1

‍deprecated·2021년 9월 14일
0

Swift 시작하기

목록 보기
9/12

컬렉션

잊고 있던 컬렉션 선언법

Array

var numbers:[Int]=[] // 뿐 아니라
var names = [Int]()/
var numbers:Array<Int> = Array<Int>() //도 있다.

//insert, remove는 '위치'를 지정한다'. append는 필요 없다.
numbers.insert(4, at:2) // 2의 위치에 4를 인서트
numbers.remove(at:0) // 0의 위치의 원소를 딜리트
numbers.append(222)

Dictionary

var dic: Dictionary<String, Int> = Dictionary<String, Int>()
// 추가, 수정은 간편히
dic["정해인"] = 1
// 삭제는 value 지정
dic.removeValue(forKey: "정해인")

Set

set은 선언 축약형 없다.

var set1:Set = Set<Int>()
// insert, remove 사용 가능

함수

외부 인자(argument label) 지정시,
함수 내부에선 외부 인자 사용이 불가하며,
함수 외부에선 parameter 사용이 불가하다.

func send(from me:String, to you:String){
    print("from \(me), to \(you)")
    // print("from \(from), to \(to)") 시 에러
}
send(from:"Yoonjong", to:"Him")
// send(me:"Yoonjong", you:"Him") 시 에러

가변매개변수

인자를 배열처럼 사용하며, 함수당 하나만 사용가능하다.

func sender(me:String, friends:String...) -> String {
    return "Hello \(friends[3]), this is \(me)"
}
sender(me: "yoonjong", friends: "unix", "Brad", "sis", "linux")

조건문

범위 연산자도 사용 가능

let humid = 65
switch humid {
case 0...40:
    print("건조")
case 41...69:
    print("쾌적")
default:
    print("짜증")
}

반복문

잊고 있던 repeat-while

적어도 한 번은 실행된다.

var x = 10
repeat {
    x += 5
} while x < 9
print(x) // 15 출력됨.

옵셔널

타입? 로 선언만 한 변수는 nil 값

var name:String? // 기본값은 nil이다!
var optionalName:String? = "Gunter"
print(optionalName) // optional binding 필요
// var newName:String = optionalName // 옵셔널로 선언됐기에 에러

명시적 해제

강제 해제 : !

비강제 해제 : 옵셔널 바인딩(if let, guard let)

var number:Int? = 3
if let res = number {
    print(res)
} else { }
// if let 구문은 res가 if 문 내에서만 사용 가능

guard let result = number else { return }
print(result)
// guard let 구문은 선언한 result 변수가 함수 전체에서 사용할 수 있다.

묵시적 해제

컴파일러에 의한 자동 해제

비교연산자를 이용하여 비교시, 컴파일러가 자동으로 옵셔널을 해제한다.

let value:Int? = 6
if value == 6 {
    print("value is 6")
} else {
    print("x")
}

옵셔널의 묵시적 해제

let string = "12"
// var strToInt:Int? = Int(string)
// string이 한글, 영어 일 경우 nil이 반환될 것이므로 반환타입이 optional int

// 이때 아래와 같이 한다면 묵시적 옵셔널 해제
var strToInt:Int! = Int(string)
profile
deprecated

0개의 댓글