https://bbiguduk.gitbook.io/swift/
The Swift Programming Language (한국어) - Swift
The Swift Programming Language (한국어)
bbiguduk.gitbook.io
Swift 공식문서 한글화 사이트
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/revisionhistory/
Documentation
docs.swift.org
https://github.com/apple/swift-evolution
GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhancements to the Swift Programming Lang
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhance...
github.com
Swift의 변화과정들을 볼수있는 사이트
var x : Int = 10;
let y : Int = 20;
y = 30;
//error: cannot assign to value: 'y' is a 'let' constant
var z = 3;
print(x)
print(y)
print(z)
//main.swift:8:12: error: '=' must have consistent whitespace on both sides
let은 상수를 선언할때 사용되며
위와 같이 초깃값이 있을 경우에는 컴파일러가 타입 추론(type inference)을 하므로 데이터 타입을 명시할 필요 없다
print(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ") // Prints "1.0 ... 2.0 ... 3.0 ... 4.0 ... 5.0"
for n in 1...5 { print(n, terminator: "") } // Prints "12345"
var x = 10
print(type(of:x))
let s = MemoryLayout.size(ofValue: x)//8
let t = MemoryLayout<Int>.size
print(s, t)
//Int
//8 8
swift 에서는 Int형의 크기가 8byte 이다
데이터타입의 크기들은 플랫폼에 따라 다르다. Int형을 예시로 들자면 대부분의 언어와 컴파일러에선 4Byte로 인식하여 사용하지만 Swift 같은 경우 Int형의 크기를 8Byte로 사용한다.
var x : Int = 10
print(x)
print("x")
print("\(x)")
print("값은 \(x)입니다.")
print("Int32 Min = \(Int32.min) Int32 Max = \(Int32.max)")
10
x
10
값은 10입니다.
Int32 Min = -2147483648 Int32 Max = 2147483647
원하는 값을 문자열로 출력하기 위해선 \( ) 를 사용한다
var userName : String = "Kim" // : String 생략하는 것이 일반적임
var age = 20
var message = "\(userName)의 나이는 \(age)입니다."
print(message) // Kim의 나이는 20입니다.
문자열 보간(string interpolation)을 사용하여 문자열과 변수, 상수, 표현식, 함수 호출의 조합으로 만들 수도 있다
타입 어노테이션(type annotation)
Int 타입의 userCount 라는 이름의 변수를 선언
var userCount : Int = 10 // : Int가 type annotation
선언부에 타입 어노테이션이 없으면 스위프트 컴파일러는 상수 또는 변수의 타입을 식별하기 위하여 타입 추론(type inference) 사용
해당 상수 또는 변수에 값이 할당되는 시점에서 그 값의 타입을 확인하고 그와 같은 타입처럼 사용
var signalStrength = 2.231 // var signalStrength : Double = 2.231
let companyName = "My Company"
signalStrength라는 변수를 Double 타입(스위프트의타입 추론에서 모든 부동 소수점 수는 Double 타입)
companyName이라는 상수는 String 타입으로 간주
상수를 선언할 때도 타입 어노테이션을 사용하면 나중에 코드에서 값을 할당할 수 있다.
let bookTitle: String
var book = true
if book {
bookTitle = "iOS"
}
else {
bookTitle = "Android"
}
print(bookTitle)
상수에는 값을 한 번만 할당할 수 있다
튜플은 Swift에서 가장 강력한 기능 중 하나이며 여러 값을 하나의 개체에 일시적으로 묶는 방법이다.
튜플에 저장되는 항목들은 어떠한 타입도 될 수 있으며, 저장된 값들이 모두 동일한 타입일 필요도 없다
let myTuple = (10, 12.1, "Hi")
var myString = myTuple.2
print(myString)
print(myTuple.1,myTuple.2,myTuple.0)
튜플을 생성할 때 각 값에 이름을 할당할 수도 있다
let myTuple = (count: 10, length: 12.1, message: "Hi")
let (myInt, myFloat, myString) = myTuple
print(type(of:myTuple))
print(myTuple.0, myTuple.count)
//(count: Int, length: Double, message: String)
//10 10
Void는 빈 튜플(empty tuple) 이다
typealias Void = () //아무 내용도 없는 튜플,
typealias name = existing_type
Optional(옵셔널)은 값이 존재하지 않을 수 있는 상황을 다루기 위한 개념으로 다양한 프로그래밍 언어에서 지원됩니다.
var x : Int = 10
var y : Int?
var z : Int!
print(x,y,z)
//10 nil nil
var x : Int = 10
var y : Int? = 5
print(x,y)
//10 Optional(5)
옵셔널 타입 변수를 선언하기 위해서는 타입 선언부 뒤에 “?” 문자를 쓴다
var index: Int?
- index 변수는 정수 값을 갖거나 아무 값도 갖지 않을 수 있다(nil)