[ Swift ] #1. 데이터 타입

ma.caron_g·2022년 6월 26일
0

Swift

목록 보기
1/4
post-thumbnail

본 게시글은 아래 분들의 블로그를 참고하여 작성했습니다.

[ 1-1 변수와 상수 ]

Swift에서는

  • 변수(varialbe)를 var
  • 상수(constant)를 let

(Swift는 상수 사용을 권장하고 있습니다.)

// 변수 선언 
var name = "Seung Hyun"
// 상수 선언
let birthYear = 1997

변수는 값을 변경할 수 있습니다.

// 기존 name 변수 값을 변경
name = "macaorng"

상수는 값을 변경하면 컴파일 에러가 발생합니다.

// 기존 birthYear 상수 값을 변경 시도
brithYear = 2000

Cannot assign to value: 'brithYear' is a 'let' constant

[ 1-2 정적 타이핑 ]

Swift는 정적 타이핑 언어입니다.
변수나 상수를 정의할 때 그 자료형(Type)이 어떤 것인지를 명시해주어야 하는 언어를 말합니다.

var name: String = "macarong"
let birthYear: Int = 1997
var height: Float = 168.4

[ Swift 특징. 타입이 엄격 ]

변수와 상수명 오른쪽에 : String, : Int, : Float과 같이 변수에 담길 값의 타입을 지정해주는 것을 정적 타이핑한다라고 합니다.
: StringType Annotation이라고 합니다.
Swift에서는 타입을 매우 엄격하게 다루기 때문에 다른 자료형끼리는 기본적인 연산이 되지 않습니다.

[ 타입이 다른 값들의 연산 ]

birthYear + height	// Compile Error!

Binary operator '+' cannot be applied to operands of type 'Int' and 'Float'
이를 해결하는 방법은 강제로 형을 변환하여 사용하는 것입니다.

Float(birthYear) + height	// 2165.4

[ 문자열에 변수 넣기 ]

Swift에서 문자열에 변수를 넣는 방법은 아래와 같습니다

String(birthYear) + "년에 태어난 " + name + "아 안녕!"

위와 같이 작성 시 가독성이 떨어지지만 아래와 같이 좀 더 가독성 있게 작성할 수 있습니다.

\(birthYear)년에 태어난 \(name)아 안녕!"

[ 1-3 타입 추론 (Type Inference) ]

본문 처음 작성한 예시에서는 따로 명시해주지 않아도 name문자열, birthYear정수형이라는 것을 알았습니다.

Swift 컴파일러는 큰 따옴표(" ")로 감싸진 텍스트는 String타입인 것을 알고 숫자는 Int 타입인 것을 인식할 수 있습니다.

이렇게 타입을 직접 명시하지 않고 정적 타이핑을 할 수 있게 해주는 것을 타입 추론(Type Interface)라고 합니다.

[ 1-4 배열(Array)과 딕셔너리(Dictionary) ]

배열과 딕셔너리는 대괄호 ( [ ] )를 이용해서 정의할 수 있습니다.

// 배열(Array) 선언
var languages = ["Swift", "Objective-C", "Java", "Python"]
// 딕셔너리(Dictionary) 선언
var capitals = [ "한국": "서울", "일본": "도쿄", "중국": "베이징", ]

배열과 딕셔너리에 접근하거나 값을 변경할 때에도 대괄호를 사용합니다.

languages[0] // Swift
languages[1] = "Ruby"

capitals["한국"]
capitals["프랑스"] = "파리"

참고로,
다른 상수와 마찬가지로 배열과 딕셔너리를 let으로 정의하면 값을 수정할 수 없습니다.
물론 값을 추가하거나 삭제하는 것도 불가능합니다.

정적 타이핑으로 변수를 선언한다면

var languages: [String] = ["Swift, "Objective-C", "Java", "Python"]
var capitals: [String: String] = [ "한국": "서울", "일본": "도쿄", "중국": "베이징", ]

languagescapitals의 타입을 대괄호 안에 어떤 타입을 받을 것인지 명시합니다.

빈 배열이나 빈 딕셔너리를 정의하고 싶다면

var languages: [String] = []
var capitals: [String: String] = [:]

조금 더 간결하게 표현하자면 아래와 같이 표현 가능합니다.

var languages: [String]()
var capitals: [String: String]()

타입 뒤에 괄호 ( () )를 쓰는 것은 생성자(Initalizer)를 호출하는 것입니다.

이는 다음에 자세히 다룰 예정입니다.

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글