πŸ§‘πŸ»‍πŸ’» iOS 개발/Swift

[Swift 문법] 03. Swift 의 κΈ°λ³Έ λ°μ΄ν„°νƒ€μž…κ³Ό μƒμˆ˜ λ³€μˆ˜μ˜ 선언을 μ•Œμ•„λ³΄μž.

barosalki 2021. 1. 6. 10:28

ν•΄λ‹Ή 글은 μ•Όκ³°λ‹˜μ˜ μŠ€μœ„ν”„νŠΈ κ°•μ˜μ™€ 개인적인 곡뢀λ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.


1. Swift 의 κΈ°λ³Έ 데이터 νƒ€μž… (DataType)

μ•ˆλ…•ν•˜μ„Έμš”! 벌써 21년이 4μΌμ΄λ‚˜ μ§€λ‚¬λ„€μš”.. μ‹œκ°„ μ°Έ λΉ λ₯΄μ£ ? λ‹€λ“€ μ˜¬ν•΄ λͺ©ν‘œν•œ 것듀 μ΄λ£¨μ‹€κ±°μ—μš”!

자 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” Swift 의 κΈ°λ³Έ 데이터 νƒ€μž… 7κ°€μ§€ (Int , UInt , Float , Double , Bool, Character, String) 에 λŒ€ν•΄μ„œ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  νŠœν”Œ, μ»¬λ ‰μ…˜(Array,Dictionary,Set), μ—΄κ±°ν˜•λ„ μžˆμ§€λ§Œ λ‹€μŒ ν¬μŠ€νŠΈμ—μ„œ 닀루도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€!

μŠ€μœ„ν”„νŠΈμ˜ κΈ°λ³Έ 데이터 νƒ€μž…μ€ λͺ¨λ‘ ꡬ쑰체λ₯Ό 기반으둜 κ΅¬ν˜„λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. 그리고 λͺ¨λ“  데이터 νƒ€μž…μ˜ 이름은 첫 κΈ€μžκ°€ λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜λŠ” Upper Camel Case  λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€!

  •   Int 와 UInt

       λ‹€λ₯Έ μ–Έμ–΄λ₯Ό κ³΅λΆ€ν•˜μ…¨μœΌλ©΄ μ•„μ‹œκ² μ§€λ§Œ, Int λŠ” 0,+,- λΆ€ν˜Έλ₯Ό ν¬ν•¨ν•œ μ •μˆ˜μ΄κ³  UIntλŠ” 0을 ν¬ν•¨ν•œ μ–‘μ˜ μ •μˆ˜μž…λ‹ˆλ‹€. Int 와 UInt의 ν¬κΈ°λŠ” μ‚¬μš©ν•˜λŠ” ν”Œλž«νΌμ— 따라 32-bit ν˜Ήμ€ 64-bit의 크기λ₯Ό κ°€μ§‘λ‹ˆλ‹€. κ·Έ μ΅œλŒ€κ°’κ³Ό μ΅œμ†Ÿκ°’μ„ μ•Œκ³  μ‹Άλ‹€λ©΄ min, maxν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  •   Float κ³Ό Double
     
       Float κ³Ό Double은 λΆ€λ™μ†Œμˆ˜μ μ„ μ‚¬μš©ν•˜λŠ” μ‹€μˆ˜μž…λ‹ˆλ‹€. λΆ€λ™μ†Œμˆ˜μ μ€ μ‰½κ²Œ μ†Œμˆ˜μ  μžλ¦¬κ°€ μžˆλŠ” 수λ₯Ό λœ»ν•©λ‹ˆλ‹€. Double은 64bit 크기 , Float은 32bit 크기의 λΆ€λ™μ†Œμˆ˜ νƒ€μž…μž…λ‹ˆλ‹€. μ†Œμˆ˜μ μ„ μ‚¬μš©ν•΄μ•Ό ν•  λ•ŒμΈλ° 무엇을 써야할지 λͺ¨λ₯΄κ² λ‹€λ©΄ Double νƒ€μž…μ„ μ“°μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

  •   Bool 

      Bool은 λΆˆλ¦¬μ–Έ νƒ€μž…μœΌλ‘œ μ°Έ(true) λ˜λŠ” κ±°μ§“(false)λ§Œμ„ κ°’μœΌλ‘œ κ°€μ§‘λ‹ˆλ‹€. C λ‚˜ C++ μ—μ„œ 처럼 0κ³Ό 0이 μ•„λ‹Œμˆ˜λ‘œ trueλ‚˜ falseλ₯Ό λ‚˜νƒ€λ‚Ό 수 μ—†λ‹€λŠ” 것을 μ£Όμ˜ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

  •  Character κ³Ό String

     μŠ€μœ„ν”„νŠΈμ—μ„œλŠ” μœ λ‹ˆμ½”λ“œ 9을 μ‚¬μš©ν•  수 있기 떄문에 μœ λ‹ˆμ½”λ“œμ—μ„œ μ§€μ›ν•˜λŠ” λͺ¨λ“  언어와 이λͺ¨ν‹°μ½˜, 특수기호λ₯Ό μ‚¬μš© ν•  수 μžˆμŠ΅λ‹ˆλ‹€.  CharacterλŠ” 말 κ·ΈλŒ€λ‘œ 단 ν•˜λ‚˜μ˜ 문자λ₯Ό λœ»ν•©λ‹ˆλ‹€.

    String은 λ¬Έμžλ“€μ˜ λ‚˜μ—΄, λ¬Έμžμ—΄μž…λ‹ˆλ‹€. 그리고 Characterκ³Ό String λͺ¨λ‘ ν°λ”°μ˜΄ν‘œ(" ")λ₯Ό μ‚¬μš©ν•΄ ν‘œν˜„ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€. 특히 Swiftμ—μ„œ String에 λ§Žμ€ λ©”μ„œλ“œλ₯Ό μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— λ¬Έμžμ—΄μ„ μ‰½κ²Œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€. String λ©”μ„œλ“œλŠ” μΆ”ν›„ ν¬μŠ€νŒ…μ—μ„œ λ‹€λ£¨κ² μŠ΅λ‹ˆλ‹€.
import Swift

// κΈ°λ³Έ 데이터 νƒ€μž…

//Int : μ •μˆ˜νƒ€μž…μœΌλ‘œ 기본적으둜 64λΉ„νŠΈ μ •μˆ˜ν˜•
//UInt : μ–‘μ˜ μ •μˆ˜νƒ€μž… , 64λΉ„νŠΈ μ–‘μ˜ μ •μˆ˜ν˜•

var someInt: Int = -100
var someUInt: UInt = 10

print("IntλŠ” [\(Int.min) ~ \(Int.max)]의 값을 κ°€μ§‘λ‹ˆλ‹€.")
print("λ§Œμ•½ 32-bit platfrom이면 IntλŠ” [\(Int32.min) ~ \(Int32.max)]의 값을 κ°€μ§‘λ‹ˆλ‹€.")


// String : λ¬Έμžμ—΄ νƒ€μž…, μœ λ‹ˆμ½”λ“œ μ‚¬μš©, 큰 λ”°μ˜΄ν‘œ("") μ‚¬μš©
// Character : 문자 νƒ€μž…, μœ λ‹ˆμ½”λ“œ μ‚¬μš©, ν°λ”°μ˜΄ν‘œ("") μ‚¬μš©

var someString: String = "someString"
var someCharacter: Character = "πŸ˜ƒ"
print(someCharacter)


// Bool : true 와 falseλ§Œμ„ κ°’μœΌλ‘œ κ°€μ§€λŠ” νƒ€μž…, C λ‚˜ C ++ 처럼 0,1의 κ°’μœΌλ‘œ λŒ€μ²΄ν•  수 μ—†λ‹€.

var someBool: Bool = false


//Float : μ‹€μˆ˜ νƒ€μž…, 32λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜ν˜•
//Double : μ‹€μˆ˜ νƒ€μž…, 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜ν˜•

var someDouble: Double = 10.0
var someFloat: Float = 1.23


// λ§Œμ•½ 데이터 νƒ€μž…μ„ λͺ…μ‹œ ν•˜μ§€ μ•Šκ³  μ„ μ–Έν•˜λ©΄ μ–΄λ–»κ²Œ 될까?

let integer = 28
let floating = 123.45
let myName = "j"

print(type(of: integer))
print(type(of: floating))
print(type(of: myName))

// μˆœμ„œλŒ€λ‘œ Int , Double , String 이 λœλ‹€. Swift 의 Type Inference에 λ”°λ₯Έ 결과이닀.


2. μƒμˆ˜μ™€ λ³€μˆ˜ ( Variable , Constant ) 

λ³€μˆ˜μ™€ μƒμˆ˜λŠ” νŠΉμ • νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” κ°’μ˜ μ΄λ¦„μž…λ‹ˆλ‹€. λ³€μˆ˜λŠ” 생성 ν›„ 좔후에 데이터 값을 λ³€κ²½ ν•  수 μžˆμ§€λ§Œ μƒμˆ˜λŠ” ν•œλ²ˆ μ§€μ •ν•΄ λ†“μœΌλ©΄ λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€. SwiftλŠ” μ„ μ–Έ μ‹œ 데이터 νƒ€μž…μ„ μƒλž΅ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬ νƒ€μž…μ„ μ§€μ •ν•˜μ§€λ§Œ λ˜λ„λ‘ 이면 νƒ€μž…μ„ μ§€μ •ν•΄μ„œ μ‚¬μš©ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

  • λ³€μˆ˜ : var [λ³€μˆ˜λͺ…]: [λ°μ΄ν„°νƒ€μž…] = [κ°’] 의 ν˜•νƒœλ‘œ μ„ μ–Έν•©λ‹ˆλ‹€.

  • μƒμˆ˜ : let [λ³€μˆ˜λͺ…]: [λ°μ΄ν„°νƒ€μž…] = [κ°’] 의 ν˜•νƒœλ‘œ μ„ μ–Έν•©λ‹ˆλ‹€. 
// λ³€μˆ˜ 와 μƒμˆ˜

import Swift

var name: String = "unknown"

print(name)

name = "extramilejin"

print("μ €μ˜ 이름은 \(name) μž…λ‹ˆλ‹€.")

let age: Int = 28

// age = 20 -> 컴파일 였λ₯˜

// νƒ€μž… μƒλž΅μ˜ κ²½μš°μ—λ„ 컴파일 λœλ‹€.

var studentName = "extramiljin"


3. 마무리 

μŠ€μœ„ν”„νŠΈλŠ” νƒ€μž…κ³Ό 띄어쓰기에 μƒλ‹Ήνžˆ λ―Όκ°ν•©λ‹ˆλ‹€. 항상 μ½”λ“œ μž‘μ„±ν• λ•Œ μœ λ…ν•˜μ‹œκΈΈ λ°”λž˜μš”! λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œλŠ” λ°μ΄ν„°νƒ€μž…μ„ μ’€ 더 μžμ„Έν•˜κ²Œ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€! 날씨가 μΆ”μ›Œμ§€λŠ”λ° κ°κΈ°μ‘°μ‹¬ν•˜μ„Έμš”~!