티스토리 뷰
swift 의 간단한 자료형
swift 는 변수형 은 var
로 상수형은 let
로 자료형을 선언하여 주면 자동적으로 그 타입을 추론하여 넣어주는 방식으로 동작하고 있습니다
예를들어 아래와 같은 코드를 보면
var number1 = 1
var number2:Int = 1
number 1과 number2는 둘다 정수형 타입으로 같은 값을 참조한다고 이야기 할 수 있습니다. 마찬가지로
var string1 = "hello"
var string2:String = "hello"
위의 string1 과 stirng2도 마찬가지로 같은 “hello”문자열을 나타내는 변수명에 해당됩니다.
그렇다면 swift의 자료형은 매우 유동적이고 타입에 제한이 없는가?
정답은 그와 아주 반대로 swift는 아주 강하게 타입을 제한하고 있습니다.
자바의 경우
// "helloworld"
String message1 = "hello" + "world";
// "hello2"
String message2 = "hello" + 2;
// "300hello"
String message3 = 100 + 200 + "hello";
위와같이 형 변환에 자유롭습니다.
message1 의 형태는 문자열 + 문자열의 경우로
두 문자열을 단순하게 나열해 주는것 으로 연산을 처리합니다.
두번째 message2의 경우에는
문자열 hello와 정수형 2가 결합하게 되는데 JAVA는 자동으로 정수형 2를
문자열 "2"
로 형 변환(casting) 시켜 그대로 문자열에 붙여주게 됩니다.
세번째 message3의 경우에는
처음 나오게 되는 정수형 100과 200 의 덧셈(+) 연산은 정수끼리의 합연산 즉 연산값이 300으로 나오게 되며,
이어지는 300 + "hello"
의 연산에서는 300을 문자열로 강제 casting 하여300hello
라는 최종적인 결과물을 보여주게 됩니다.
스위프트의 경우에
// "helloworld"
var swift1 = "hello" + "world"
// 300
var swift2 = 100 + 200
// 에러
var swift3 = "hello" + 2
문자 + 문자는 두 문자열의 합으로
숫자 + 숫자는 두 숫자의 덧셈값으로 계산하지만
문자 + 숫자의 연산은 에러를 내게 됩니다.
사용자는 숫자를 문자열에 덧붙이기 위해서는 둘다 어느 한쪽의 타입으로 통일되어야만 이루어 지게 됩니다.
덧셈을 하는 대상의 타입이 자료형으로 정확하게 명시되어야 가능하게 되는것이 swift의 특징 입니다.