λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍏 Today I Learned/Swift 문법

[Swift] 데이터 νƒ€μž…

by Joseph Seong 2023. 12. 6.

 

 

데이터 νƒ€μž…

 

 

 

숫자

 

Int

  • μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” 데이터 νƒ€μž…μœΌλ‘œ -2,147,483,748 ~ 2,147,483,647 μ‚¬μ΄ 숫자λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.
var age: Int = 18 // Int νƒ€μž…

 

Float

  • μ†Œμˆ˜μ μ„ ν‘œν˜„ν•˜λŠ” 데이터 νƒ€μž…μœΌλ‘œ 32λΉ„νŠΈ 뢀동 μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.
  • Float의 μ •λ°€λ„λŠ” μ†Œμˆ˜μ  μ΄ν•˜ 6μžλ¦¬κΉŒμ§€ κ°€λŠ₯ν•˜λ‹€.
var interestRate: Float = 1.2345678910 // Float νƒ€μž…
print("μ΄μžμœ¨μ€ \(interestRate) % μž…λ‹ˆλ‹€")
// 좜λ ₯κ°’: μ΄μžμœ¨μ€ 1.2345679 % μž…λ‹ˆλ‹€

 

Double

  • μ†Œμˆ˜μ μ„ ν‘œν˜„ν•˜λŠ” 데이터 νƒ€μž…μœΌλ‘œ 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.
  • Double의 μ •λ°€λ„λŠ” μ†Œμˆ˜μ  μ΄ν•˜ 15자리 이상 κ°€λŠ₯이닀.
  • 두 μœ ν˜• λͺ¨λ‘ μ ν•©ν•œ μƒν™©μ—μ„œλŠ” Double을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€. 
var interestRate: Double = 1.2345678910123456789 // Double νƒ€μž…
print("μ΄μžμœ¨μ€ \(interestRate) % μž…λ‹ˆλ‹€")
// 좜λ ₯κ°’: μ΄μžμœ¨μ€ 1.2345678910123457 % μž…λ‹ˆλ‹€

 

 

 

μ°Έ ν˜Ήμ€ κ±°μ§“

 

Bool

  • μ°Έ true와 κ±°μ§“ false 을 ν‘œν˜„ν•  수 μžˆλŠ” 데이터 νƒ€μž…μ΄λ‹€.
// Bool λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”
var isOpen: Bool = true
var isLogged: Bool = false

// μ‘°κ±΄λ¬Έμ—μ„œ Bool κ°’ μ‚¬μš©
if isOpen {
    print("문이 μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€.")
} else {
    print("문이 λ‹«ν˜€ μžˆμŠ΅λ‹ˆλ‹€.")
}

// Bool 값을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
func checkLoginStatus(isLogged: Bool) {
    if isLogged {
        print("λ‘œκ·ΈμΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
    } else {
        print("λ‘œκ·ΈμΈλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.")
    }
}

// ν•¨μˆ˜ 호좜
checkLoginStatus(isLogged: isLogged)    // 뒀에 isLoggedλŠ” false의 isLogged

 

 

문자



String

  • λ¬Έμžμ—΄μ„ ν‘œν˜„ν•˜λŠ” 데이터 νƒ€μž…μœΌλ‘œ ν…μŠ€νŠΈλ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.
var emptyString: String = "" 
var anotherEmptyString = String()  

var variableString = "Mom"
variableString += " and Dad"
print(variableString)
// 좜λ ₯κ°’: "Mom and Dad"

 

Character

  • ν•˜λ‚˜μ˜ 문자λ₯Ό ν‘œν˜„ν•˜λŠ” 데이터 νƒ€μž…μ΄λ‹€.
let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!🐱"

 

 

λ‹€μ–‘ν•œ κ°’μ˜ 묢음

 

Tuple

  • νŠœν”Œμ€ μ—¬λŸ¬ 값을 ν•˜λ‚˜λ‘œ κ·Έλ£Ήν™”ν•œ κ°’ (ν•˜λ‚˜μ˜ λ³€μˆ˜λ‘œ λ‘κ°œλ₯Ό μ²˜λ¦¬ν•˜κ³  μ‹Άμ–΄μ„œ)
  • Tuple은 κ΄€λ ¨ κ°’μ˜ λ‹¨μˆœν•œ 그룹에 μœ μš©ν•˜λ‹€ (λ³΅μž‘ν•œ 데이터 ꡬ쑰λ₯Ό λ§Œλ“œλŠ” λ°λŠ” μ ν•©ν•˜μ§€ μ•Šλ‹€.)
let http404Error: (Int, String) = (404, "Not Found")

let (justTheStatusCode, _): (Int, String) = http404Error
print("The status code is \(justTheStatusCode)")
// 좜λ ₯κ°’: "The status code is 404"

// νŠœν”Œ 값에 μ ‘κ·Όν•˜λ €λ©΄ μˆœμ„œλ₯Ό μ•Œκ³  μžˆμ–΄μ•Ό ν•œλ‹€.
print("The status code is \(http404Error.0)")
// 좜λ ₯κ°’: "The status code is 404"
print("The status message is \(http404Error.1)")
// 좜λ ₯κ°’: "The status message is Not Found"

// 각 μ—˜λ ˆλ¨ΌνŠΈμ— 이름을 뢙일 수 μžˆλ‹€.
let http200Status: (Int, String) = (statusCode: 200, description: "OK")

// λ§Žμ€ 데이터λ₯Ό λ‹΄λŠ” λ°λŠ” μ ν•©ν•˜μ§€ μ•Šλ‹€ - μ‚¬μš©ν•˜λŠ” μͺ½μ—μ„œ 또 λ§€ν•‘(Mapping)을 ν•΄μ•Ό 함
let myInfo: (String, Int, Int, Int, String, String) = 
(name: "peter", registrationNumber: 970212, height: 185, weight: 75, job: "developer", hobby: "soccer")

 

 

 

λͺ¨λ“  νƒ€μž…

 

Any

  • AnyλŠ” λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ˜ 값을 μˆ˜μš©ν•  수 μžˆλ‹€.
  • Any 배열을 λ§Œλ“€λ©΄ νŠΉμ • νƒ€μž…μ˜ 배열이 μ•„λ‹ˆλΌ μ—¬λŸ¬ νƒ€μž…μ„ 담을 수 μžˆλ‹€.
  • ν•˜μ§€λ§Œ Any 데이터 ν˜•μ„ λŒ€μž…ν•˜λ €λ©΄ λ°˜λ“œμ‹œ ν˜• λ³€ν™˜μ΄ ν•„μš”ν•˜λ‹€.
var anyArray: [Any] = [1,"Hi", true]

var anyValue: Any = 1000
anyValue = "μ–΄λ–€ νƒ€μž…λ„ 수용 κ°€λŠ₯"
anyValue = 12345.67

// 컴파일 μ—λŸ¬
let doubleValue: Double = anyValue  // 🚨 μ—λŸ¬ λ©”μ‹œμ§€: Cannot convert value of type 'Any' to specified type 'Double'
// Any νƒ€μž…μ— Double 값을 λ„£λŠ” 것은 κ°€λŠ₯ν•˜μ§€λ§Œ
// AnyλŠ” Double κ³Ό μ—„μ—°νžˆ λ‹€λ₯Έ νƒ€μž…μ΄κΈ° λ•Œλ¬Έμ—
// Double νƒ€μž…μ˜ 값에 Any νƒ€μž…μ˜ 값을 ν• λ‹Ήν•  λ•Œμ—λŠ” λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ λ³€ν™˜ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.