let name: String = "Junyeong Choi"; //상수
var number: Int = 23; //변수
💡변수, 상수, 함수, 메서드, 타입 등의 이름은 유니코드 지원 문자면 상관없이 사용가능
예외사항: 예약어, 키워드, 연산자, 숫자시작문자열, 공백포함문자열
//한줄주석 예시입니다.
/*
여러줄 주석 예시입니다.
여러줄 주석 예시입니다.
*/
///한줄예시입니다. 마크업으로 작성가능합니다. (함수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")
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 (_, _): 과 같다.