lang/swift

[swift] 1. basic

SHplusR 2022. 9. 23. 17:02

basic양이 꽤 많다. 문서 내용 중 내가 생각하기에 중요한것들..그리고 기억해야할 특징들만 정리했다. 

 

1. 스위프트는 objc, c와 마찬가지로 기본적인 자료형을 제공한다. 예를 들면 int, string, bool....등

그리고 types, array, set, dict, 와 같은 collection types도 제공한다.

 

2. 스위프트는 c와 마찬가지로 변수들을 사용하며, 이는 이름에 따라 구별된다. 특히 상수는 c에서보다 훨씬 강력하게 작용한다.

 

3. objc에서는 없지만 스위프트에서는 튜플을 사용한다.

 

4. 스위프트에는 옵셔널이라는게 있다. 이건 nil을 처리한다. 옵셔널을 사용하는건 옵젝씨에서 nil값을 가지는 포인터를 사용하는것과 비슷하다. 그렇지만 다른 점이 있다면 스위프트는 어느 타입에서나 옵셔널을 사용가능하다는것이다.

옵셔널을 사용하면 옵젝씨에서 nil을 가지는 포인터를 사용하는것보다 안전하다

사실 옵셔널이 스위프트의 중심에 있음...젤 중요하다고 생각함 ( 갑자기 내 의견)

 

5.  스위프트는 type-safe lang이다. 만약 내가 1.0 이라 적는다면 스위프트가 알아서 이를  double로 인식한다.

코틀린처럼!

 

변수와 상수

 

변수 : 변하는 값

상수 : 변하지 않는 값

 

(1) 스위프트에서 변수는 var, 상수는 let을 사용한다. 

 

  1. let maximumNumberOfLoginAttempts = 10
  2. var currentLoginAttempt = 0

(2) 한 줄에 여러 값을 정의 할 수 있다.

  1. var x = 0.0, y = 0.0, z = 0.0

 

Type  Annotation

스위프트에서 값의 타입을 지정할때는 아래의 예시와 같이 지정한다. 

  1. var welcomeMessage: String

사실 타입을 지정하지 않아도, 스위프트는 타입 추론이 가능하여 알아서 맞춰주긴한다. 

타입 명시와 값을 동시에 작성하려면 아래 캡쳐와 같이 작성한다. 

 

(2) 한 줄에 여러 값을 정의 할 수 있다.

  1. var x = 0.0, y = 0.0, z = 0.0

(3) 이모티콘도 사용이 가능하다!! >> 이건 몰랐다.

 

쩐다아

Tuples

튜플은 리스트와 비슷한데, 리스트와는 달리 다른 타입들끼리 그룹으로 묶을 수 있다는 특징이 있다. 

  1. let http404Error = (404, "Not Found")

 

튜위가 스위프트 공식문서에서 주는 튜플의 예시이다. 웹페이지에서 404오류 발생시의 오류코드, 나오는 에러 메세지 "not found"가 다른 타입임에도 불구하고 하나의 상수 http404Error로 묶일 수 있음을 보여준다.

 

튜플의 값을 무시하려면 _를 쓰면 된다. 

 

 

index로 지정하여 볼 수 있다.

 

튜플의 값에 name을 지정하여 사용가능하다!

 

 

Optionals

옵셔널은 스위프트에서만 사용된다. 옵셔널은 값이 있거나 값이 없을 수 있는 상황, 즉 nil일 수 있을 때 사용된다.

예를들어 아래 코드와 같다.

opnumber는 string형으로 값은 "123"이지만 int형으로 바꾸어도 123 이라는 값으로 바뀔 수 있다. (optional)

openg도 string형이지만 int형으로 바꾼다하면..바꿀 값이 없다.sohappy라는 값과 변환할 int형 값이 없기 때문이다. nil일 수 있기 때문에 옵셔널이 쓰인다. 

결국, 각각의 값을 프린트해보면 

intnumber는 Optional(123) 이 나오고

inteng는 nil이 나온다. 

이런 경우를 위하여 옵셔널이 사용된다. 

 

nil

스위프트는 자동적으로 아래와 같이 적으면 surveyAnswer을 nil로 본다.

  1. var surveyAnswer: String?

스위프트의 nil은 옵젝씨의 nil과 다르다. 

스위프트의 nil은 특정 유형의 값이 존재하지 않는거다. (옵젝씨는 아예 존재하지 않는 객체를 말함)