스위프트 문법 정리 1

Programming 2018. 8. 23. 06:14

스위프트(swift) 언어를 공부하고 있는데, 기존에 알고 있던 언어와 다른 점이 꽤 있다.

알고 있는 언어라고 해봐야 C, C++, JAVA, C#, Javascript 밖에는 안 되지만.

그래서 정리를 좀 해보려 한다.


변수의 타입에 대해

별 차이는 없다. 키워드도 Int, String, Double, Float, Array, Set 등 유사하다.

상수의 지정: let 키워드 

변수의 지정: var 키워드

타입의 지정 식:  let x:Int  (콜론 뒤에 타입을 지정하지 않으면 최초로 입력되는 값에 따라 타입을 결정)

처음에 5라는 Int형을 입력하면 5.0이라는 소수점이 달린 숫자는 입력할 수 없다. 

결국 엄격한 타입 선언이지만 썩 마음에 들지 않는다. 차라리 타입을 명시하는 게 프로그래머 입장에서는 관리가 수월해 보인다.


배열의 사용

값 추가: += 구문 , append(구문)

인덱스에 추가: insert(추가구문, at:인덱스번호)

인덱스에서 삭제: remove(at:인덱스번호)


딕셔너리의 사용

값 추가: merging

예시1) dic1.merging(dic2) { (current, _) in current }.   >> 같은 키의 값은 유지함

예시2) dic1.merging(dic2) { (_, new) in new }    >> 같은 키의 값을 업데이트

수정: updateValue(값, forKey:키)

삭제: removeForKey(forKey:키)

인덱스로 삭제하는 방법은 못 참음

키를 배열로 받아오자 => var arr = [String](dic.keys)

값을 배열로 받아오자 => var arr = [Int](dic.values)

아, 딕셔너리의 선언은 var dic:[String:Int] 형태로 해야한다.


세미콜론(;) 찍을꺼야 말꺼야?

Javascript도 그렇고 참... 세미콜론을 찍을지 말지 참 고민했는데, 이 세미콜론 찍는 것도 일이라는 걸 새삼스레 깨닫게 된다. 

의외로 빌드를 위해 실행시켰다가 세미콜론 문법 오류에 걸린 적이 꽤 많았던 경험을 생각해보면, 이 부분도 작업 효율의 저해 요인으로 여겨야지 섬세함의 부족으로 계속 치부할 수는 없는 노릇이다.


튜플(tuple). 그것은 무엇?

딱히 정의를 한다면, 데이터타입에 관계없이 데이터의 리스트를 선언할 수 있는 데이터형이라고 하면 되지 않을까?

무슨 얘긴가 하면, 배열의 경우에는 하나의 배열에는 선언한 데이터형으로만 데이터 목록을 만들 수 있는데, 예를 들어,

 Int형으로 선언되면 [1, 2, 3, 4]처럼 배열을 구성하며 ["1", 2, 3, 4]은 구성 못 하지만, 튜플은 이게 된다는 것이다. 

그리고 배열의 인덱스는 반드시 숫자지만, 튜플은 키/값 형태의 선언도 가능하다. 

예를 들어, var tuple = (a:22, b, c)라고 한다면 인덱스 a로 접근(tuple.a)하여 값을 읽을 수 있다. 신기방기하다.


Set도 있다!

insert, remove, popFirst 따위로 값을 집어넣고 빼고 한다.

특히, union, intersection, subtracting 등과 같이 합, 교, 차집합 등의 연산을 수행할 수 있어 유용하다.


데이터타입 정리는 여기까지!

admin