You are currently viewing  [Swift] Types and Variables Part 2
swift

 [Swift] Types and Variables Part 2

이름 짓기: 카멜 케이스와 의미 있는 이름

변수나 상수의 이름을 지을 때는 카멜 케이스(CamelCase) 표기법을 따르는 것이 Swift의 표준 규칙입니다. 카멜 케이스란, 첫 단어는 소문자로 시작하고, 이어지는 각 단어의 첫 글자만 대문자로 작성하는 방식입니다. 🐫

Swift
let myName = "Paul"       // my(소), Name(대)
var totalAnimalLegs = 8 // total(소), Animal(대), Legs(대)

매우 중요한 점은, 이름만 봐도 그 역할과 의미를 명확히 알 수 있도록 짓는 것입니다.

예를 들어, let foo = 2와 같이 의미 없는 이름은 피해야 합니다. foo가 무엇을 의미하는지 아무도 알 수 없습니다. 대신 let age = 2라고 작성하면, 이 상수가 ‘나이’를 나타내며 그 값이 ‘2’라는 것을 즉시 파악할 수 있습니다.

이렇게 의미를 잘 설명하는 이름은 미래의 자신과 코드를 함께 읽을 다른 동료들을 돕는 가장 좋은 방법이며, 코드를 관리하고 확장하기 쉽게 만들어 줍니다. 더 자세한 내용은 Swift API 가이드라인을 참고하시면 좋습니다.


Swift의 핵심 데이터 타입

모든 변수와 상수는 반드시 **타입(Type)**을 가집니다. 가장 기본적이고 중요한 타입은 다음과 같습니다.

  • Int: 정수
  • Float, Double: 실수 (소수점 숫자)
  • String: 문자열
  • Bool: 불리언 (참/거짓)

숫자 타입: Int, Float, Double

Int는*정수(whole number)를 나타냅니다. 양수, 음수 모두 가능하지만 소수점은 포함할 수 없습니다.

FloatDouble소수점을 포함하는 숫자(실수)**를 나타냅니다. 둘의 차이는 정밀도(precision)에 있습니다. DoubleFloat보다 약 두 배 더 높은 정밀도를 가지므로 더 많은 소수점 이하 자릿수를 저장할 수 있습니다. 그래서 이름도 ‘Double’입니다.

만약 타입을 명시하지 않고 소수점 숫자를 선언하면, Swift는 기본적으로 더 정밀한 Double 타입으로 추론합니다.


타입이 다른 값들 간의 연산

Swift에서는 같은 타입끼리만 연산이 가능합니다. 이는 매우 중요한 규칙입니다. 만약 Int 타입과 Double 타입을 직접 더하려고 하면 오류가 발생합니다.

Swift
let integerValue: Int = 4
let doubleValue: Double = 4.2

// let result = integerValue + doubleValue 
// 🚨 오류 발생! Int와 Double 타입의 값은 직접 더할 수 없습니다.

컴퓨터는 이 결과를 Int로 만들어야 할지(소수점을 버리고 8로), Double로 만들어야 할지(8.2로) 스스로 결정할 수 없기 때문입니다.

해결 방법 1: 타입 캐스팅 (Type Casting)

타입 캐스팅은 한 타입을 다른 타입으로 명시적으로 변환하는 것입니다. 이를 통해 타입 불일치 문제를 해결할 수 있습니다.

Swift
let catLegsAsDouble: Double = 4.2
let dogLegs: Int = 4

// 방법 A: dogLegs(Int)를 Double로 변환하여 더하기
let totalLegsAsDouble = catLegsAsDouble + Double(dogLegs) // 4.2 + 4.0 = 8.2

// 방법 B: catLegsAsDouble(Double)을 Int로 변환하여 더하기 (소수점 버려짐)
let totalLegsAsInt = Int(catLegsAsDouble) + dogLegs // 4 + 4 = 8

해결 방법 2: 타입 명시와 추론 활용하기

타입 명시(Type Annotation)를 통해 변수나 상수가 가져야 할 타입을 강제할 수 있습니다.

Swift
// catLegs를 처음부터 Double 타입으로 선언합니다.
// 숫자 4는 정수처럼 보이지만, Double 타입으로 선언했기 때문에 Swift가 4.0으로 자동 변환해줍니다.
let catLegs: Double = 4

물론, 전혀 호환되지 않는 타입 간의 변환은 불가능합니다. 문자열을 숫자로 바로 바꿀 수는 없습니다.

Swift
// let someNumber: Double = "Paul" // 🚨 오류! 문자열을 숫자로 바로 변환할 수 없습니다.

대부분의 경우 Swift가 타입을 똑똑하게 추론(infer)하기 때문에 : String과 같은 타입 명시는 불필요(redundant)하며 생략할 수 있습니다.


불리언 타입: Bool

불리언(Boolean) 또는 Bool 타입은 오직 true(참) 또는 false(거짓) 두 가지 값만 가질 수 있는 타입입니다. ✅/❌

Swift
// canDrive는 Bool 타입의 상수이며, 값은 false 입니다.
let canDrive: Bool = false

// Swift가 true를 보고 isStudent가 Bool 타입이라고 추론합니다.
let isStudent = true

불리언 타입의 이름은 canDrive(운전할 수 있는가?), isStudent(학생인가?)처럼 질문 형태로 지으면 코드를 읽기 훨씬 쉬워집니다.

답글 남기기