Swift에 대한 공부를 시작해보겠다!
현재 알고 있는 언어는 JS 밖에 없음으로 JS와 비교할 수도 있다.
Swift는 애플에서 만든 프로그래밍 언어로 IOS와 Mac, Apple Tv, Apple Watch와 같은 곳의 앱 개발을 목적으로 만들어졌습니다. 기존 개발에 사용되던 Object-C보다 빠르고 배우기 쉽다는 장점이 있습니다.
테스트 환경으로는 VsCode에 Swift language 익스텐션을 사용하거나 Xcode의 playground를 사용하면 됩니다. (Xcode에 playground가 바로바로 에러 로그가 뜨기 때문에 저는 Xcode를 사용했습니다. 12버전 이후에는 File -> New -> playground로 들어가야 한다.)
이제 코드 들어가보자!
Swift는 let, var 명령어를 사용하여 선언을 합니다.
let은 선언을 한 뒤에는 값을 변경할 수 없습니다.
var는 선언 후 값을 변경할 수 있습니다.
선언을 할 때에는 변수의 데이터 타입을 지정을 해 줄 수 있습니다.
var testVar : String = "test";
testVar = "TEST";
print(testVar);
//TEST
let testLet : String = "test";
testLet = "TEST";
//Err : Cannot assign to value: 'test' is a 'let' constant
만약 상위에 변수를 선언해야 하지만 변수의 값을 나중에 할당하고 싶을 때에는
let num : Int;
.
.
.
num = 12;
//이후에는 값을 변경하려 하면 에러 발생
선언을 할 때 지정 타입
문자열 -> String, Character
정수 -> Int
소숫점->
32비트(최대 6자리까지): Float,
64비트(최대 15자리까지): Double
선언시 지정 타입뒤에 ?를 붙여 사용합니다.
//nil은 js의 null과 같이 빈 값을 지정해주는 값 입니다. 옵셔널은 기본적으로 값을 넣어주지 않으면 nil을 지정해줍니다.
let a : String? = "String";
var b : Int?;
let c : Double? = nil;
print("a : \(a), b : \(b), c : \(c)");
//a : Optional("String"), b : nil, c : nil
옵셔널 값이 할당되어있으면 래핑되어있다고 하는데 이를 강제로 해제 할 수도 있습니다.
let b : Int? = 1;
print("wrapping : \(b) unWrapping : \(b!)")
//wrapping : Optional(1) unWrapping : 1
위와 같은 경우는 옵셔널 값(!)을 사용하여 강제적으로 변경한 것 이지만 옵셔널 바인딩을 사용하면 비강제적으로 언래핑할 수 있습니다.
var value : Int?;
value = 1;
if let test = value{
print("test 값 \(test) value 값 \(value)");
}else{
print("실패");
}
//test 값 1 value 값 Optional(1)
위와 같이 변수 새로운 변수 안에 선언하는 옵셔널 바인딩을 사용하면 test의 값이 1로 변경된 것을 볼 수 있습니다.
언래핑하는 방법은 그 외에도 ?대신 !를 사용하여 방법도 있습니다.
var test : Int!;
test = 1;
let arr = [1,12,4];
print("test : \(test) arr[test] : \(arr[test])");
//test : Optional(1) arr[test] : 12
let str : String? = nil;
let test : String = nil;
//'nil' cannot initialize specified type 'String'
let test2 = nil;
//'nil' requires a contextual type