[Swift ๋ฌธ๋ฒ•] 03. Swift ์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํƒ€์ž…๊ณผ ์ƒ์ˆ˜ ๋ณ€์ˆ˜์˜ ์„ ์–ธ์„ ์•Œ์•„๋ณด์ž.

2021. 1. 6. 10:28ใ†๐Ÿง‘๐Ÿป‍๐Ÿ’ป iOS ๊ฐœ๋ฐœ/Swift

ํ•ด๋‹น ๊ธ€์€ ์•ผ๊ณฐ๋‹˜์˜ ์Šค์œ„ํ”„ํŠธ ๊ฐ•์˜์™€ ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


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. ๋งˆ๋ฌด๋ฆฌ 

์Šค์œ„ํ”„ํŠธ๋Š” ํƒ€์ž…๊ณผ ๋„์–ด์“ฐ๊ธฐ์— ์ƒ๋‹นํžˆ ๋ฏผ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ฝ”๋“œ ์ž‘์„ฑํ• ๋•Œ ์œ ๋…ํ•˜์‹œ๊ธธ ๋ฐ”๋ž˜์š”! ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฐ์ดํ„ฐํƒ€์ž…์„ ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋‚ ์”จ๊ฐ€ ์ถ”์›Œ์ง€๋Š”๋ฐ ๊ฐ๊ธฐ์กฐ์‹ฌํ•˜์„ธ์š”~!