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. ๋ง๋ฌด๋ฆฌ
์ค์ํํธ๋ ํ์ ๊ณผ ๋์ด์ฐ๊ธฐ์ ์๋นํ ๋ฏผ๊ฐํฉ๋๋ค. ํญ์ ์ฝ๋ ์์ฑํ ๋ ์ ๋ ํ์๊ธธ ๋ฐ๋์! ๋ค์ ํฌ์คํ ์์๋ ๋ฐ์ดํฐํ์ ์ ์ข ๋ ์์ธํ๊ฒ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค! ๋ ์จ๊ฐ ์ถ์์ง๋๋ฐ ๊ฐ๊ธฐ์กฐ์ฌํ์ธ์~!