Swift란

JH Bang·2023년 6월 12일
0

Swift

목록 보기
1/1
post-thumbnail

About Swift

Swift는 애플이 2014년에 발표한 프로그래밍 언어로, C와 Objective-C에 비해 간결하고, 모던하며 안전한 코드를 작성하기 위해 설계되었다.

  • 안전성: Swift는 명시적인 변수 선언을 통해 데이터 타입의 일관성을 보장하며, 초기화되지 않은 변수나 널(null) 값 참조와 같은 프로그래밍 오류를 방지하도록 설계.
  • 퍼포먼스: Swift는 최적화된 컴파일러를 사용하여 고성능의 애플리케이션을 제작 가능.
  • 현대적인 언어 구조: Swift는 최신 프로그래밍 언어 디자인 패턴을 채택, 가독성과 유지 보수가 좋음. 함수형 프로그래밍과 객체지향 프로그래밍, 프로토콜 지향 프로그래밍의 요소를 모두 포함.

공식문서 welcome swift - About swift

공식 문서에 따르면 스위프트는 다음과 같은 modern programming patterns을 가지고 있다.


  • Variables are always initialized before use.
var myVar: Int  // 변수 선언
myVar = 10  // 변수 초기화
print(myVar)  // 변수 사용

  • Array indices are checked for out-of-bounds errors.
let myArr : Array<Int> = [0, 1, 2]

print(myArr[2])  // 2 출력
print(myArr[3])  // Index out of range

  • Integers are checked for overflow.
var myInt : Int = Int.max
print(myInt)
print(myInt + 1) // 컴파일 에러

  • Optionals ensure that nil values are handled explicitly.
var optionalVar: Int? = nil
if let unwrapped = optionalVar {
    print("Value: \(unwrapped)")
} else {
    print("Value is nil")
}

  • Memory is managed automatically.
class MyClass {
    var name: String
    init(name: String) {
        self.name = name
    }
}
var ref: MyClass? = MyClass(name: "Swift")
ref = nil  // ref가 nil로 설정되면 MyClass 인스턴스는 메모리에서 자동으로 제거

  • Error handling allows controlled recovery from unexpected failures.
enum MyError: Error {
    case runtimeError(String) // 연관값(associated value)
}
do {
    throw MyError.runtimeError("An error occurred")
} catch MyError.runtimeError(let errorMessage) {
    print("Caught an error: \(errorMessage)")
} catch {
    print("Unknown error occurred")
}

에러는 enum으로 선언하여 사용하게 되는데, 함수처럼 사용되는 것은 연관값이다.

또 Swift는 강력한 타입 추론과 패턴 매칭 기능이 있다.

Swift combines powerful type inference and pattern matching with a modern, lightweight syntax, allowing complex ideas to be expressed in a clear and concise manner.


Version Compatibility

공식문서 welcome swift - Version Compatibility

2023년 6월 기준 Swift 5.9버전에 대해 기술하고 있으며, 다음 기능들은 5.9버전 이후 버전에서만 사용될 수 있다.


  • Functions that return an opaque type require the Swift 5.1 runtime.

Opaque type은 불필요한 정보를 감춰 코드를 간결하게 만드는 방법이다.


  • The try? expression doesn’t introduce an extra level of optionality to expressions that already return optionals.

do { try } catch { } 꼴의 문법에서의 try를 말한다. try에는 try? 옵셔널과 try! 옵셔널이 있다.


  • Large integer literal initialization expressions are inferred to be of the correct integer type. For example, UInt64(0xffff_ffff_ffff_ffff) evaluates to the correct value rather than overflowing.

타입 추론에 따라 아래 선언을

let largeNumber = 0xffff_ffff_ffff_ffff

다음과 같이 해석한다는 것.

let largeNumber: UInt64 = 0xffff_ffff_ffff_ffff
profile
의지와 행동

0개의 댓글