Swift common grammer

최준영·2022년 6월 6일
1

Swift

목록 보기
1/6

변수와 상수

  1. 생성 키워드
    var/let [변수명]: [데이터타입] = [값]
    💡var: 변수 let: 상수
let name: String = "Junyeong Choi"; //상수
var number: Int = 23; //변수

💡변수, 상수, 함수, 메서드, 타입 등의 이름은 유니코드 지원 문자면 상관없이 사용가능
예외사항: 예약어, 키워드, 연산자, 숫자시작문자열, 공백포함문자열


주석

  • 일반주석
//한줄주석 예시입니다.

/*
여러줄 주석 예시입니다.
여러줄 주석 예시입니다.
*/
  • 마크업문법 활용 문서화 주석
    Xcode퀵헬프를 통해 볼수 있는 Description입니다.
    함수바로위에 공간에 작성함으로써 사용가능합니다.
///한줄예시입니다. 마크업으로 작성가능합니다. (함수1의 Discription에 표시)
함수1

/**
여러줄 예시입니다.
마크업으로 작성가능합니다. (함수2의 Discription에 표시)
**/
함수2

타입별칭

기존에 존재하는 타입의 별칭을 지정할 수 있다.

typealias 별칭 = String; 

let name: 별칭 = "junyeong";
let school: String = "Hongik Univ";

print(name, school); //junyeong Hongik Univ

튜플

튜플타입은 기존타입들을 간편하게 묶어낼 수 있다

let name: String = "junyeong";
let school: String = "Hongik Univ";

let 나만의튜플: (name: String, univ: String) = (name, school);

print(나만의튜플); //(name: "junyeong", univ: "Hongik Univ")

typealias myTuple = (name: String, univ: String); //튜플도 타입이다
var 나만의튜플2: myTuple = (name, school);

print(나만의튜플2); //(name: "junyeong", univ: "Hongik Univ")

//Update
나만의튜플2.name = "Dongsu";
나만의튜플2.univ = "Seoul Univ";

print(나만의튜플2); //(name: "Dongsu", univ: "Seoul Univ")

Switch

  • break 키워드 사용은 선택적이다.
  • 타입에 구에받지 않고 사용가능하다.
  • 모든경우가 존재하지 않는다면 반드시 default 키워드를 사용해야한다.

기본형

func myAgeReaction(_ age: Int) {
    switch age {
        case 23:
        print("yes, my age!")
        case 10...15, 25...32: //*한번에 여러번 비교가 가능하다.
        print("Are you serious?")
        fallthrough  //아래의 case조건과 관계없이 아래 case구문을 실행한다.
        case 18...22:
        print("thank you")
        default: //일치하는 case가 없을수 있음으로 default를 작성해준다.
        print("answer again plz..") 
    }
}
myAgeReaction(19) //thank you
myAgeReaction(12) //Are you serious? thank you *fallthrough사용예시
myAgeReaction(26) //Are you serious? thank you
myAgeReaction(56) //answer again plz..

💡위의 case 10...15, 25...32를 아래처럼 작성할 수 없다.

case 10...15:
case 25...32:
execute code
    
case아래에는 반드시 실행구문이 와야하기 때문이다.
+ break도 실행구문이다.

튜플 타입과 바인딩

typealias myTuple = (name: String, age: Int)

func findMyInform(_ data: myTuple) {
    switch(data){
        case ("choi", 23):
        print("정답이야!")
        case ("choi", _):  //_(와읻드카드) 를 사용할 경우 사용부분을 고려하지 않는다.
        print("이름은 아는구나?")
        case (_, 20...25):  //범위연산자 사용가능
        print("나이는 비슷하게 맞췄네..")
        case (let name, let age):  //주어지는 겂을 바인딩해 사용이 가능하다.
        print("내이름이 \(name)이고 나이가 \(age)세라고?? 장난치냐?")
    }
}

findMyInform(("park", 23)) //나이는 비슷하게 맞췄네..
findMyInform(("choi", 16)) //이름은 아는구나?
findMyInform(("park", 26)) //내이름이 park이고 나이가 26세라고?? 장난치냐?
findMyInform(("choi", 23)) //나이는 비슷하게 맞췄네.
💡switch문은 상위 case부터 순차적으로 조건을 검사한다. 
따라서 _사용하면 특정값에 대한 case를 실행하고 싶어도 _문이 실행될 수 있다.
그러므로 _을 사용하는 case는 하위에 작성하는 것을 권장한다.

💡값을 바인딩하는 조건문은 _를 사용한 문과 조건이 일치한다.
위의 case (let name, let age): 는 사실상 case (_, _): 과 같다.

profile
Developer가 되고싶은 꿈나무

0개의 댓글