1에 비해 2가 짧고 2에 비해 이번 3은 더 짧을것이다.

예전에 받은 SwiftUI책을 이제서야 좀 보고있는데

이 책이 한 반절은 스위프트 언어에 대해 다룬다.

그 내용을 보고 있자니 내가 얼마나 답답하게 진행했는지 생각되어 해당 부분들을 짧게짧게 할 생각이다.

스위프트 공식 홈페이지의 기본서가 왜 그리 짧게되어 있는지 이제야 좀 알겠다. 

 

 

이번은 1에서 다뤘어야할 데이터형에 대해서 적을것이다.

실제 있는 데이터형은 무척이나 많으나 여기서는 몇가지만 적을것이고 

원래는 2번에 이어 곱셈과 나눗셈을 다뤄야하나 곱셈 나눗셈을 하기전에 데이터형을 짚고 넘어가야할듯 하여 집어 넣었다.

 

 

해당 내용에는 Int8 ,16, 32 와 같이 나뉘는 애들은 생략하겠다.

 

1. 정수

우선 기본적으로 숫자를 나타내는 정수인 Int가 있다 

1편에서 값을 저장할때는

 

공간의 형식(let / var) 공간의 이름 = 값 

 

이라고 했는데 사실 하나더 있다

 

형식 이름:데이터타입 = 값 

 

실제로는 이렇다.

 

스위프트에서는 값을 보고 이 애가 사실 타입이 무엇이겠구나 라며 추정해주며 해당 타입을 자동으로 지정해주기에 데이터타입을 적지 않았었다.

 

이 정수에서는 위의 나눗셈할때 적은 설명 그대로 정수인 몫만 구하고 나머지는 %로 구한다.

 

ex) let a:Int = 4

 

2. 실수

여기서 말하는 실수는 단순히 소수점이 포함된 수이다.

이 실수에는 타입이 두가지가 있는데

Float 형과 Double형이다.

해당내역은 값을 저장하는 범위와 상관이 있으나 일단 Double로 기억하고 나중에가서 생각하자.

 

ex) let b:Double = 0.1

 

3. 문자열

1편에서부터 사용한 문장의 형식이고 String으로 적는다.

 

ex) let c:String = "Hello world"

 

4. 문자

문장이 아닌 단 하나의 글자만을 이용할때 필요하다. Char라고 적는다

ex) let d:Character = "a"

 

String이 제공하는 함수와

Character가 제공하는 함수가 다르기에 필요에 따라 다르게 쓰인다

무조건 글자하나만이라고 해서 Character를 사용할 필요가 없다.

 

5. 논리형

스위프트에서는 참과 거짓을 저장하는 타입이 따로있다.

Bool 로 적는다

 

let e:Bool = false

let f:Bool = true

 

 

6. 배열

배열은 같은형식의 여러값을 한번에 묶어놓을때 사용한다

타입은 Array<값하나의 형식> 또는 [값하나의 형식] 라고 적는다

 

1,3,5,7 이라는 수들을

let ab:Array<Int> = [1,3,5,7]

이라고 적을 수 있고

let ab:[Int] = [1,3,5,7] 로 적을 수 있다.

 

 

해당 수들을 사용하고 싶다면

ab[0]

ab[1] 이런식으로 뒤에 번호를 붙여 사용한다.

배열은 가장 앞에 있는 자리를 0번으로 부른다.

 

print(ab[0]) 

라고 하면 1이 출력된다.

 

 

7. 튜플

6의 배열은 같은 형식의 값만 묶었다면

튜플은 여러가지 값을 묶을 수 있다.

그냥 괄호로 묶으면된다

Int형숫자 4 와 Double형 숫자 3.141592 와 String형 문자열 "abcdefg"를 묶으면

let abc = (4, 3.141592, "abcdefg")

접근은 앞에서부터 0으로

숫자4를 사용하고 싶으면 abc.0 를 쓰면된다.

 

이번은 타입을 생략했는데 사실 튜플이라고 따로 뭔가 이름이 있지 않고 값에 따라 다르게 들어간다

위의 abc는

(Int, Dobule, String) 이라고 형식이 지정되었을것이다.

 

튜플은 꽤나 유용하게 쓰일수 있으나 자리수 0,1,이런식으로 부르면 

뒤에서 형식을 알아보기 힘들다.

 

그래서 튜플은 아래와 같이도 사용가능하다.

 

let abc = (number:4 , double:3.141592 , string: "abcdefg")

대신 이렇게 적었다면

첫번째 수에 접근하고 싶으면

abc.number 이렇게 적어줘야한다.

 

8. 옵셔널

이 옵셔널은 논리형과 비슷하나 실제값을 가지고있다.

옵셔널 자체는 값이 두가지로 나눠지는데

none 과 some 이다.

실제로 사용할때는 none은 값이 nil 으로 나오고

some은 실제 값이 나오게된다.

 

값을 저장하게끔 변수를 만들었으나 이게 진짜 값이 들어갔을지 모르는 상황에서 안전하게 값을 사용하게 만들어진 

안전장치중 하나이다.

 

이 옵셔널 형식은 거의 모든 형식에 붙일수있고 데이텨형뒤에 물음표를 붙여 지정한다.

 

실제 사용할때는 이 옵셔널을 벗기고 사용해야한다.

벗기는 방법은 느낌표를 붙여서 강제로 벗기거나

아직 다루지않은 조건문에 의해서 값이 none이 아니면, nil이 아니면 사용가능하도록 하게 할 수 있다.

 

강제로 벗길때는

 

var a:Int? = 4 

라면

let b = a!

이렇게 하면 b에는 4가 들어간다. 

 

9. 딕셔너리

6번, 배열과 유사하다.

6번에는 값이 넣은 순서대로 질서를 유지하는애라면

딕셔너리는 키값에 따라 팀을 이룬 값이다.

데이터형은 

Dictionary<키값의 형: 값의 형>

또는

[키값의 형 : 값의 형] 으로 적는다.

배열은 값을 넣은순서를, 인덱스를 넣었다면

딕셔너리는 키를 넣어서 값을 접근한다.

키가 없으면 없는 값이기에 딕셔너리는 접근시 반환되는 값이 옵셔널값이다.

 

let abe:[String:String] = [ "길동" : "111-434""길수" : "112-443"]

값을 출력할때 옵셔널을 해제하지 않으면 아래와 주석과같이 나온다.

print(abe["길동"]) // Optional("111-434")

 

- 위 줄은 그대로 적어도 동작한다 뒤에 '//'는 주석이라하여  코드에 적어놓는 메모이다. 

 

let abf:Dictionary<String,String> = [ "길동" : "111-434""길수" : "112-443"]

print(abf["길동"])

 

 

 

 

 

 

 

 

 

 

+ Recent posts