Swifter {Swift Developer}

메뉴

Swift 입문2 – 변수, 상수, 문자열

변수

변수 정의는

var 변수명 : 타입 = 값

으로 선언합니다.

문자열을 사용해서 만들어 봅시다. 참고로 문자열은 String입니다.

1) 아래와 같이 Playground에서 입력해 봅시다.

[swift]

import UIKit

var str : String = "안녕하세요"

println(str)

[/swift]

결과를 확인해 보세요.

2) 변수 값을 변경해 봅시다.

[swift]

import UIKit

var str : String = "안녕하세요"

str = "ㅋㅋㅋㅋㅋ"

println(str)

[/swift]

3) 이제 처음 선언한 var str 변수를 삭제하고 실행해 봅시다.

[swift]

import UIKit

var str = "ㅋㅋㅋㅋㅋ"

println(str)

[/swift]

무엇이 다른지 아시겠습니까? 바로 타입(형)이 선언하지 않았는데도 아무런 오류가 없이 실행된다는 것입니다. 컴파일러가 변수 타입을 유추하고 선언해서 처리해주기 때문입니다.  큰 따움표 안의 문자를 여러 개로 입력되어 있기 때문에 컴파일러는 문자열로 유추하고 String형을 배치하고 있습니다. 결과적으로 타입을 선언하지 않아도 오류가 나지 않게 되는 것입니다.

중요한 것은 컴파일 할 때, 타입추측을 한다는 것에 주목해야 합니다.  컴파일할 때, 형추측을 하기 때문에 오류가 있으면 컴파일에서 확인 메시지가 나오고 때문에 아래와 같이 문자열 변수에 숫자를 입력하면 오류가 발생합니다.

[swift]

import UIKit

var str = "안녕하세요"

str = 1

println(str)

[/swift]

문자열 변수에 숫자를 입력했기 때문에 오류가 발생합니다.

여기서 Objective-C언어보다 비교적 코딩양이 줄어들 것이고 품질은 차이가 없습니다. 코딩양이 줄어들기 때문에 소스코드 가독성은 좋아집니다.

문자열의 결합

[swift]

import UIKit

var str = "안녕하세요"

str = str + " 김명준입니다"

println(str)

[/swift]

문자열은 +로 합칠 수 있고, Objective-C처럼NSMutableString을 사용하거나 stringWithFormat:을 사용하는 번거로움은 없어졌습니다.

또한 +=을 사용하여 결합하는 것도 가능합니다.

[swift]

import UIKit

var str = "안녕하세요"

str += " 김명준입니다"

println(str)

[swift]

 
<h2>상수</h2>
값을 변경하지 않는 것을 변수라고 생각한다면 이것이 버그의 원인이 됩니다. 값을 변경하지 않는 경우에는 상수라는 것을 사용한다는 기억해야 합니다.

상수 정의는

let 상수명 : 타입 = 값

입니다.

앞에서 실행했던 Hello World를 실행하는 소스의 변수형 var를 let으로 변경하고 실행하면 오류가 발생합니다. 이는 상수를 변경하려고 했기 때문에 발생하는 오류로 str += "김명준입니다"라는 행을 삭제하면 오류가 발생하지는 않을 것입니다.

var와 let구분을 하느냐에 따라 Mutable여부를 제어할수 있습니다. 이 말은 문자열 부분으로 Objective-C언어를 사용하던 개발자라면 NSArray와 NSMutableArray등 Mutable여부를 구분하고 있다고 생각되지만,  var와 let  제어를 할 수 있게 된 것이기 때문입니다.

&nbsp;
<h2>언제 변수와 상수를 정의할까?</h2>
변경할 필요가 없다면 let으로 선언하는 것이 좋습니다. 무의식적으로 변경되는 것을 예방할 수 있습니다. 또한 실행속도가 var를 사용할 때보다 빠릅니다.

&nbsp;
<h2>Swift의 String형</h2>
[swift]

var str1 = "안녕하세요"

var str2 = str1

str2 += ", 김명준!"

println(str2)

println(str1)

[/swift]

변수 str1과 변수 str2의 결과는 다릅니다.

Objective-C언어를 사용하던 개발자는 String형을 사용할 때 주의해야 합니다. NSString형태를 그대로 코딩해버리기 때문입니다.

Facebook Comments

카테고리:   Swift Books

댓글

죄송하지만 댓글은 닫혀 있습니다.