
23-04-18
알고 보니 애플에서 Swift Language Guide를 매우 잘 정리해 준 페이지가 있었다.
강의 보는데 기본 자료형부터 이해가 드문드문 되는 부분이 많아서 기본 문법자료부터 공부해야겠다 싶었음.
🌏 참고사이트
Swift Language Guide
난 C를 공부해 본 적이 없다. 그래서 뭔가 읭 스러운 부분들이 있었던 듯. Python을 배운 후에 C계열 언어를 배우면 머리가 너무 아프대서... 이참에 어떤 느낌인지 알아보도록 하자.
참고로 Objective-C 는 C언어에서 파생된 객체 지향 프로그래밍 언어이고, Swift 등장 이전까지 애플의 표준 프로그래밍 언어였다고 한다. 내가 몰라서 써 놓음...
- C 및 Objective-C와 자료형을 공유한다. (Int, Double, Float, Bool, String, Array, Set, Dictionary 등)
- 변수는 물론이고, C보다 아주 강력한 "상수"를 사용한다. Swift에서 상수는 아주 넓게 사용되며, 코드를 명료하고 안전하게 만들어주는 역할을 한다.
- C와 Objective-C에는 없는 자료형, Tuple을 사용한다. 함수에 Tuple을 적용하면 하나의 값 뭉치에서 여러 값을 산출할 수 있다.
- 옵셔널(Optional)이라는 자료형이 있다. 값의 미지정 여부를 관리하는 type이라고 함.
- 자료형이 명확한 type-safe language이다. String 자료형을 요구하는 코드에서 실수로 Int를 입력하지 않게 도와줌. 이로써 개발 과정에서 에러를 최대한 빨리 잡을 수 있도록 한다.
상수와 변수는 사용되기 전에 선언되어야 함. 상수는 let으로, 변수는 var으로. 로그인 시도회수를 예로 들어보자.
let maxNumberOfLoginAttempts = 10
var currentLogAttempts = 0
이런 식이다.
최대 시도 횟수는 고정되어야 하기 때문에 상수로, 현재 시도횟수는 로그인이 실패할 때마다 늘어나므로 변수로 선언되어야 한다.
여러 개의 상수와 변수를 선언할 수도 있음
var x = 0.0, y - 0.0, z = 0.0
상수와 변수를 선언할 때, 이들이 저장하는 자료의 종류를 명확히 하기 위해 Type Annotation 을 지정할 수 있다. 상수와 변수의 이름 옆에 콜론(:) 을 붙이고, 띄어쓰기를 하나 한 후, 사용할 자료형의 이름을 쓰면 된다.
var welcomeMessage: String
위와 같은 코드는 다음과 같이 읽힐 수 있다:
"변수 welcomeMessage의 자료형은 String입니다."
welcomeMessage = "Hello"
오류가 나지 않는다.
상수와 변수를 한번에 여러개 지정할 때에도 다음과 같이 사용할 수 있다.
var red, green, blue: Double
상수와 변수의 이름은 유니코드 캐릭터를 포함한 캐릭터를 포함할 수 있다.
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
하지만 공백, 수학 기호, 화살표, 유니코드 스칼라값, line- and box-drawing characters를 포함할 수 없다.
또한 숫자로 시작할 수 없다. 숫자가 맨 앞자리 외의 다른 자리에 포함되는 것은 가능함.
Swift Keyword와 같은 이름의 상수나 변수 이름을 만들고 싶다면 백틱(''')으로 묶어서 표시할 수 있다. 그러나 이 이름들을 사용하는 것은 권장하지 않는다.
기존에 선언된 변수가 있다면, 그 값을 동일 type의 다른 값으로 바꿀 수 있다. 예를 들어서, friendlyWelcome의 "Hello!" 를 "Bonjour!"로 바꿀 수 있다.
var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
하지만 상수는 위와 같이 바꿀 수 없다. 컴파일 에러가 남.
let friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// This is a compile-time error: languageName cannot be changed
상수와 변수의 현재 값을 print(_:seperator:terminator:) 로 출력할 수 있다.
print(friendlyWelcome)
// Prints "Bonjour!"