์๋ ํ์ธ์. ์ด๋ฒ์๋ Swift ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ํํธ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ด์ฉ์ด ๋ง์์ 2๊ฐ์ ํฌ์คํธ๋ก ๋๋์ด ์ค๋ช ํ ์์ ์ด๋ฉฐ, Swift์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ณ์์ ๊ด๋ จ๋ ๋ด์ฉ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
๐ Swift ๊ธฐ๋ณธ ๊ฐ๋
Swift๋ ๋ค์ํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ ์๋ฅผ ์ํ Int
- ๋ถ๋ ์์์ ๊ฐ์ ์ํ Double
- ๋ ผ๋ฆฌ๊ฐ์ ์ํ Bool
- ํ ์คํธ๋ฅผ ์ํ String
- ๊ธฐ๋ณธ ์ปฌ๋ ์ ํ์ ์ธ Array, Set, Dictionary
ํ์ -์ธ์ดํ(type-safe): Swift๋ ํ์ -์ธ์ดํ ์ธ์ด๋ก, ๋ณ์๊ฐ ์ฌ์ฉํ๋ ๊ฐ์ ํ์ ์ ๋ช ํํ๊ฒ ์ง์ ํด์ผ ํ๋ฉฐ, ์๋ชป๋ ํ์ ์ ๊ฐ์ด ์ ๋ฌ๋๋ ๊ฒ์ ์ปดํ์ผ ์์ ์ ๋ฐฉ์งํฉ๋๋ค.
๐ ์์์ ๋ณ์ (Constants and Variables)
์ ์ธ ๋ฐฉ๋ฒ
// ์์ ์ ์ธ (๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ)
let maximumNumberOfLoginAttempts = 10
// ๋ณ์ ์ ์ธ (๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
var currentLoginAttempt = 0
let: ์์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ํค์๋๋ก, ํ ๋ฒ ๊ฐ์ด ํ ๋น๋๋ฉด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
var: ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ํค์๋๋ก, ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
ํ๊ฒฝ์ ๋ฐ๋ฅธ ์ด๊ธฐํ
var environment = "development"
let maximumNumberOfLoginAttempts: Int
if environment == "development" {
maximumNumberOfLoginAttempts = 100
} else {
maximumNumberOfLoginAttempts = 10
}
// ์ด์ maximumNumberOfLoginAttempts๋ ๊ฐ์ ๊ฐ์ง๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๋ณ์ ํ๋ฒ์ ์ ์ธ
var x = 0.0, y = 0.0, z = 0.0
ํ์ ๋ช ์ (Type Annotations)
var welcomeMessage: String
welcomeMessage = "Hello"
// ์ฌ๋ฌ ๋ณ์์ ๋์ผํ ํ์
์ง์
var red, green, blue: Double
ํ์ ๋ช ์: ๋ณ์๋ ์์์ ํ์ ์ ๋ช ํํ๊ฒ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๋ณ์๋ช ๋ค์ ์ฝ๋ก (:)๊ณผ ํ์ ๋ช ์ ์ ์ด์ค๋๋ค.
๋ณ์/์์ ์ด๋ฆ ๊ท์น
let π = 3.14159
let ไฝ ๅฅฝ = "ไฝ ๅฅฝไธ็"
let ๐ถ๐ฎ = "dogcow"
Swift ๋ณ์๋ช ์ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ํฌํจํ ์ ์์ง๋ง, ๊ณต๋ฐฑ์ด๋ ์ํ ๊ธฐํธ, ํ์ดํ ๋ฑ์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์ซ์๋ก ์์ํ ์ ์์ต๋๋ค.
๊ฐ ์ถ๋ ฅํ๊ธฐ
var friendlyWelcome = "Hello!"
print(friendlyWelcome)
// "Hello!" ์ถ๋ ฅ
// ๋ฌธ์์ด ๋ณด๊ฐ๋ฒ(String interpolation)
print("The current value is \(friendlyWelcome)")
// "The current value is Hello!" ์ถ๋ ฅ
๋ฌธ์์ด ๋ณด๊ฐ๋ฒ: ๋ฌธ์์ด ๋ด์ ๋ณ์๋ ํํ์์ ํฌํจ์ํค๋ ๊ธฐ๋ฅ์ผ๋ก, \(๋ณ์๋ช ) ํํ๋ก ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ ์์ฑ
// ํ ์ค ์ฃผ์์ ์ด๋ ๊ฒ ์์ฑํฉ๋๋ค.
/* ์ฌ๋ฌ ์ค ์ฃผ์์
์ด๋ ๊ฒ ์์ฑํฉ๋๋ค. */
/* ์ฌ๋ฌ ์ค ์ฃผ์์
/* ์ค์ฒฉ๋ ๊ฐ๋ฅํฉ๋๋ค. */
์ด๋ ๊ฒ ๋ง์ด์ฃ . */
์ธ๋ฏธ์ฝ๋ก ์ฌ์ฉ
Swift์์๋ ๊ฐ ๊ตฌ๋ฌธ ๋์ ์ธ๋ฏธ์ฝ๋ก (;)์ด ํ์๋ ์๋์ง๋ง, ํ ์ค์ ์ฌ๋ฌ ๊ตฌ๋ฌธ์ ์์ฑํ ๊ฒฝ์ฐ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํด์ผ ํฉ๋๋ค.
let cat = "๐ฑ"; print(cat)
// "๐ฑ" ์ถ๋ ฅ
๐ ์ ์ (Integers)
Swift๋ ๋ค์ํ ํฌ๊ธฐ์ ์ ์ ํ์ ์ ์ ๊ณตํฉ๋๋ค:
- 8, 16, 32, 64๋นํธ ํํ์ ๋ถํธ ์๋ ์ ์(Int8, Int16, Int32, Int64)
- 8, 16, 32, 64๋นํธ ํํ์ ๋ถํธ ์๋ ์ ์(UInt8, UInt16, UInt32, UInt64)
Int์ UInt
// Int๋ ํ์ฌ ํ๋ซํผ์ ๋ค์ดํฐ๋ธ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ค
// 32๋นํธ ํ๊ฒฝ: Int32 ํฌ๊ธฐ
// 64๋นํธ ํ๊ฒฝ: Int64 ํฌ๊ธฐ
let myInt = 42
// UInt๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ํ๋ซํผ์ ๋ค์ดํฐ๋ธ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ค
let myUInt: UInt = 42
Int: ๋ถํธ ์๋ ์ ์ ํ์ ์ผ๋ก, ํ๋ซํผ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค.
UInt: ๋ถํธ ์๋(์์๋ง ๊ฐ๋ฅ) ์ ์ ํ์ ์ผ๋ก, ํ๋ซํผ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค.
์ ์ ๋ฒ์ ํ์ธ
let minValue = UInt8.min // 0
let maxValue = UInt8.max // 255
๐ ๋ถ๋ ์์์ ์ซ์ (Floating-Point Numbers)
Swift๋ ๋ ๊ฐ์ง ๋ถ๋ ์์์ ํ์ ์ ์ ๊ณตํฉ๋๋ค:
// Double: 64๋นํธ ๋ถ๋ ์์์ , 15์๋ฆฌ ์ ๋ฐ๋
let pi = 3.14159265359
// Float: 32๋นํธ ๋ถ๋ ์์์ , 6์๋ฆฌ ์ ๋ฐ๋
let e: Float = 2.71828
Double: 64๋นํธ ๋ถ๋ ์์์ ํ์ ์ผ๋ก, ๋์ ์ ๋ฐ๋๊ฐ ํ์ํ ๋ ์ฌ์ฉํฉ๋๋ค.
Float: 32๋นํธ ๋ถ๋ ์์์ ํ์ ์ผ๋ก, Double๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉํ์ง๋ง ์ ๋ฐ๋๊ฐ ๋ฎ์ต๋๋ค.
๐ ํ์ ์ธ์ดํํฐ์ ํ์ ์ถ๋ก (Type Safety and Type Inference)
ํ์ ์ถ๋ก
// ํ์
์ ๋ช
์ํ์ง ์์๋ ์ด๊ธฐ๊ฐ์ ๋ฐ๋ผ ํ์
์ด ๊ฒฐ์ ๋ฉ๋๋ค
let meaningOfLife = 42 // Int๋ก ์ถ๋ก
let pi = 3.14159 // Double๋ก ์ถ๋ก
let anotherPi = 3 + 0.14159 // Double๋ก ์ถ๋ก
ํ์ ์ถ๋ก : ๋ณ์๋ ์์๋ฅผ ์ ์ธํ ๋ ํ์ ์ ๋ช ์ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ด๊ธฐ๊ฐ์ ๋ณด๊ณ ํ์ ์ ์๋์ผ๋ก ๊ฒฐ์ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๐ ์ซ์ ๋ฆฌํฐ๋ด (Numeric Literals)
Swift์์๋ ๋ค์ํ ํํ์ ์ซ์ ๋ฆฌํฐ๋ด์ ์ง์ํฉ๋๋ค:
// 10์ง์
let decimalInteger = 17
// 2์ง์ (0b ์ ๋์ฌ)
let binaryInteger = 0b10001 // 17
// 8์ง์ (0o ์ ๋์ฌ)
let octalInteger = 0o21 // 17
// 16์ง์ (0x ์ ๋์ฌ)
let hexadecimalInteger = 0x11 // 17
// ๋ถ๋ ์์์ ๋ฆฌํฐ๋ด
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1 // 12.1875
let hexadecimalDouble = 0xC.3p0 // 12.1875
// ๊ฐ๋
์ฑ์ ์ํ ํฌ๋งทํ
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
๋ฆฌํฐ๋ด: ์์ค ์ฝ๋์ ์ง์ ํ์๋๋ ๊ฐ์ ์๋ฏธํฉ๋๋ค.
๐ ์ซ์ ํ์ ๋ณํ (Numeric Type Conversion)
์ ์ ๋ณํ
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
// ํ์
์ด ๋ค๋ฅด๋ฏ๋ก ์ง์ ๋ํ ์ ์์
let twoThousandAndOne = twoThousand + UInt16(one) // ํ์
๋ณํ ํ์
์ ์์ ๋ถ๋ ์์์ ๋ณํ
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine // ๋ช
์์ ๋ณํ ํ์
// ๋ถ๋ ์์์ ์์ ์ ์๋ก ๋ณํ (์์์ ์ดํ ๋ฒ๋ฆผ)
let integerPi = Int(pi) // 3
ํ์ ๋ณํ: ํ ํ์ ์ ๊ฐ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ๋ ์์ ์ผ๋ก, Swift์์๋ ๋ช ์์ ์ผ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
๐ ํ์ ๋ณ์นญ (Type Aliases)
ํ์ ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ํ์ ์ ์๋ก์ด ์ด๋ฆ์ ๋ถ์ฌํ ์ ์์ต๋๋ค:
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // 0
ํ์ ๋ณ์นญ: ๊ธฐ์กด ํ์ ์ ์๋ก์ด ์ด๋ฆ์ ๋ถ์ฌํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ด๊ฒ์ผ๋ก Swift ๊ธฐ๋ณธ(The Basics)์ ์ฒซ ๋ฒ์งธ ํํธ๋ฅผ ๋ง์น๊ฒ ์ต๋๋ค. ๋ค์ ํฌ์คํธ์์๋ Bool, ํํ, ์ต์ ๋, ์๋ฌ ์ฒ๋ฆฌ, ์ญ์ค๊ณผ ์ ์ ์กฐ๊ฑด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
'๐ฅ Bread Basics > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ํด๋ก์ (Closures) (0) | 2025.04.11 |
---|---|
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ํจ์ (Functions) (0) | 2025.04.11 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ ์ด ํ๋ฆ (Control Flow) (0) | 2025.04.10 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ์ปฌ๋ ์ ํ์ (Collection Types) (0) | 2025.04.10 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ๋ฌธ์์ด๊ณผ ๋ฌธ์ (Strings and Characters) (0) | 2025.04.10 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ๊ธฐ๋ณธ ์ฐ์ฐ์ (Basic Operators) (0) | 2025.04.10 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - ๊ธฐ๋ณธ(The Basics)(2/2) (0) | 2025.04.10 |
Swift ๊ณต์ ๋ฌธ์ ์ ๋ฆฌ - A Swift Tour (0) | 2025.04.10 |