함수에 인자를 넣을때 지정해준 매개변수의 이름을 명시해줘야 합니다. (인자를 잘못 넣는 실수가 줄어들듯)
funcsum(_a:Int,_b:Int)->Int{returna+b}sum(3,4)
인자를 대입할때 이름을 명시해주기 싫다면 매개변수앞에 _를 붙여주면 됩니다.
(2) 타입추론
vara=3;a=4;a="hello"// 컴파일 에러
처음에 초기화해준 값으로 타입을 추론합니다.
이후에 다른 타입을 대입하면 컴파일 에러가 일어납니다.
swift에서 let과 var은 자바스크립트에서 각각 const와 let키워드와 비슷합니다. swift에서 var은 호이스팅(hoisting)이나 중복선언등등으로 부터 안전한듯 합니다. playground에서는 호이스팅이 되지만 swift파일에서 작성했을때는 다음과 같은 에러를 출력해 주었습니다.
vara;// 컴파일 에러a=4;
typescript에서는 위와 같이 선언시 any타입으로 명시되지만 swift에서는 초기화를 하거나 타입을 명시해줘야 합니다.
letsample=12;switchsample{case1:print("1")case2...9:print("2 ~ 9")case10:print("10")case11,12,13:print("11 or 12 or 13")default:print("nothing")}
범위값으로 case를 설정해줄 수 있습니다.
, 로 여러게 값을 case값으로 넣어줄 수 있습니다.
funcprintCoordinate(coordinate:(x:Int,y:Int)){switchcoordinate{case(0,0):print("원점")case(0,_):print("y축")case(_,0):print("x축")default:print("어느축에도 속하지 않는 좌표")}}leta=(x:2,y:0)printCoordinate(coordinate:a)// x축
튜플(tuple)을 위와같은 방법으로 switch문에 적용해볼 수 있습니다.
break명령어를 쓸필요없습니다. fallthrough를 작성해준다면 다음 케이스로 넘어가짐
funcprintCoordinate(coordinate:(x:Int,y:Int)){switchcoordinate{case(letx,0)wherex>3:print("x좌표가 3보다 큰 \(x)이네요")case(0,lety)wherey<5:print("y좌표가 5보다 작은 \(y)이네요")case(letx,lety)wherex==y:print("x축과 y축은 같은 값이네요")case(letx,lety):print("x축: \(x), y축: \(y)")}}printCoordinate(coordinate:(x:4,y:0))// x좌표가 3보다 큰 4이네요printCoordinate(coordinate:(x:4,y:4))// x축과 y축은 같은 값이네요printCoordinate(coordinate:(x:5,y:7))// x축: 5, y축: 7
let키워드로 변수를 받아 사용할 수 있습니다.
where을 이용하면 변수값을 검사할 수 있습니다.
(3) 기타
swift에서는 Array뿐만 아니라 Set, dictionary와 같이 파이썬에서 지원해주는 문법가지도 지원해줍니다.
swift언어는 ios개발 언어로 보통 xcode를 이용해서 개발을 합니다. 기존에 vscode를 많이 애용했었는데 컴파일 속도나 노트북발열(xcode시뮬레이터영향일수도..), vscode만의 마켓이용 불가등등 xcode가 불편한 점이 많습니다.
하지만 위에서 간단히 살펴보았던 것 처럼 swift는 대부분의 언어의 좋은 기능들을 합쳐놓은 느낌이 들었습니다.