κΈ°λ³Έ μ°μ°μ ( Basic Operators )
μλ νμΈμ! Swift κΈ°λ³Έ μ°μ°μμ κ΄νμ¬ λ΄μ©μ μ 리ν΄λ³΄λλ‘ νκ² μ΅λλ€! Λβ°Λ
μ 리νλ©΄μ κΈ°μ‘΄μ μλ λ΄μ©μ 볡μ΅νλ©° μλ‘κ² μκ² λ λ΄μ©μ 곡λΆν©λλ€!
μμ§μ λ§μ΄ λΆμ‘±ν μ μμΌλ νλ¦° λ΄μ©μ΄λ μ€νκ° μλ€λ©΄ λκΈ λΆνλ립λλ€!
μ°μ°μλ κ°μ νμΈ, λ³κ²½ λλ κ²°ν©νλ λ° μ¬μ©νλ νΉμ κΈ°νΈ λλ ꡬ문μ λλ€
Terminology ( μ©μ΄ )
- λ¨ν μ°μ°μ : -a , !b , c! -> λ¨μΌ λμμμ μλνλ©° λμμ λ°λ‘ μ λ€μ λνλλ μ°μ°μμ λλ€.
- μ΄ν μ°μ°μ : a + b , a - b -> λ λμ μ¬μ΄μμ μλνλ©° λ λμμ μ¬μ΄μ λνλλ μ°μ°μμ λλ€.
- μΌν μ°μ°μ : a ? b : c -> μΈ κ°μ§ λμμμ μλνλ©° μμ κ°μ ννμ μ‘°κ±΄λΆ μ°μ°μμ λλ€.
ν λΉ μ°μ°μ
ν λΉ μ°μ°μλ μμλ λ³μμ κ°μ μ΄κΈ°νμν€κ±°λ λ³κ²½ν©λλ€.
let a = 10
var a = 5
a = b
//a κ°μ 10
μ°μ μ°μ°μ
μ°μ μ°μ°μ ( + : λ§μ , - : λΊμ , * : κ³±μ , / : λλμ )
swift μ°μ μ°μ°μλ κΈ°λ³Έμ μΌλ‘ κ°μ΄ μ€λ²νλ‘ λλ κ²μ νμ©νμ§ μμ΅λλ€.
μ€λ²νλ‘λ μ μ°μμ λ²μλ₯Ό μ΄κ³Όνλ κ²μ λ§ν©λλ€.
- λ©λͺ¨λ¦¬ 곡κ°μ λ²μ΄λλ κ²λ ν΄λΉλλ©° νν λ²μλ₯Ό λ²μ΄λλ κ²λ ν΄λΉλ©λλ€.
5 + 10 // 15
10 - 5 // 5
5 * 10 // 50
10 / 2 // 5
λλ¨Έμ§ μ°μ°μ
κ³μ°νκ³ λ¨μ κ°( λλ¨Έμ§ )μ λ°νν©λλ€.
9 % 4 // 1
-9 % 4 // -1 μμκ° λν λ°©λ²μ΄ μ μ©λ©λλ€
λ¨ν λΉΌκΈ° μ°μ°μ
λ¨ν λΉΌκΈ° μ°μ°μλ 곡백 μμ΄ μ°μ°μ΄ μνλλ κ° λ°λ‘ μμ μΆκ°λ©λλ€.
let two = 2
let minusTwo = -two // -2
let plusTwo = -minusTwo // 2
λ¨ν νλ¬μ€ μ°μ°μ
λ¨ν νλ¬μ€ μ°μ°μλ λ³κ²½ μμ΄ λ¨μν μ°μ°μ΄ μ§νλλ κ°μ λ°νν©λλ€.
let minusFive = -5
let alsoMinusFive = +minusFive // -5
λ³΅ν© ν λΉ μ°μ°μ
β» λ³΅ν© ν λΉ μ°μ°μλ κ°μ λ°ννμ§ μμ΅λλ€. μ) let b = a += 1 μ μ¬μ©ν μ μμ΅λλ€.
var a = 1
a += 2 // -> νμ΄μ ν΄μνλ©΄ a = a + 2 λ°λΌμ κ²°κ³Όλ 3
λΉκ΅ μ°μ°μ
5 == 5 // a == b κ°λ€ //true
5 != 10 // a != b κ°μ§ μλ€ //true
10 > 5 // a > b ν¬λ€ //true
5 < 10 // a < b μλ€ //true
5 >= 5 // a >= b ν¬κ±°λ κ°λ€ //true
10 <= 5 // a <= b μκ±°λ κ°λ€ //false
λΉκ΅ μ°μ°μλ₯Ό μ΄μ©νμ¬ λμΌν μ νκ³Ό λμΌν μμ κ°μ κ°μ§ λ κ°μ ννμ λΉκ΅ν μ μμ΅λλ€.
ννμ λΉκ΅μμ κ°μ§ μμ λ κ°μ μ°Ύμ λκΉμ§ λ°©ν₯μΌλ‘ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ ν λ²μ ν κ°μ© λΉκ΅λ©λλ€.
// μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ λΉκ΅
(1, "zebra") < (2,"apple") //1μ 2λ³΄λ€ μμΌλ―λ‘ zebra,appleμ λΉκ΅νμ§ μμ΅λλ€ //true
(3, "apple") < (3, "bird") //3κ³Ό 3μ κ°κΈ° λλ¬Έμ λμ΄κ°κ³ appleμ birdλ³΄λ€ μκΈ°λλ¬Έμ //true
(4, "dog") == (4, "dog") //4μ4λ κ°κΈ°λλ¬Έμ λμ΄κ°κ³ dog dogλ κ°κΈ° λλ¬Έμ //true
("blue",-1) < ("purple",1) //blueλ purpleλ³΄λ€ μκΈ°λλ¬Έμ λμ΄κ°κ³ -1μ 1λ³΄λ€ μκΈ°λλ¬Έμ //true
("blue", false) < ("purple" , true) // boolean(λΆλ¦¬μΈκ°)μ λΉκ΅λ₯Ό ν μμμ΄ //false
β» λΉκ΅ μ°μ°μλ₯Ό μ΄μ©νμ¬ ννμ λΉκ΅νλ €λ©΄ 7κ° λ―Έλ§μ μμκ° μμ΄μΌ ν©λλ€. 7κ° μ΄μμ λΉκ΅νλ €λ©΄ μ°μ°μλ₯Ό μ§μ ꡬνν΄μΌ ν©λλ€
μΌν 쑰건 μ°μ°μ
μΌν μ‘°κ±΄λΆ μ°μ°μλ νμμ νμλ‘ νλ μΈ λΆλΆμΌλ‘ μ΄λ£¨μ΄μ§ νΉμ μ°μ°μμ λλ€. μ°Έκ³Ό κ±°μ§μΈμ§μ λ°λ₯Έ νλμ κ°μ κ³ λ¦ λλ€.
question ? answer1:answer2 //quesitonμ‘°κ±΄μ΄ μ°ΈμΌ κ²½μ° answer1μ΄ μ€ν κ±°μ§μΈ κ²½μ°μλ answer2μ΄ μ€ν
// μ°ΈμΌ κ²½μ°
let contentHeight = 10
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 20 : 50) //30
// κ±°μ§μΌ κ²½μ°
let contentHeight = 10
let hasHeader = false
let rowHeight = contentHeight + (hasHeader ? 20 : 50) //60
μΌν 쑰건 μ°μ°μλ μ½λλ₯Ό λ³΄λ€ μ§§κ² λ§λ€μ΄ κ°λ μ±μ λμ¬μ€λλ€π
Nil λ³ν© μ°μ°μ
nil λ³ν© μ°μ°μλ a ?? b ννλ₯Ό κ°λ μ°μ°μμ λλ€.
μ΅μ λ λ³μμΈ aλ₯Ό μΈλννμ¬ λ§μ½ aκ° nilμΈ κ²½μ°μ bλ₯Ό λ°νν©λλ€.
// μ€μλ§
a != nil ? a! : b
let defaultColorName = "red"
var userDefinedColorName: String? // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
β» λ§μΌ userDefinedColorName κ°μ nilκ°μ΄ μλλΌλ©΄. => userDefinedColorName! μΈλννμ¬ λ°νν©λλ€.
userDefinedColorName κ°μ΄ nilκ°μ λλ€ -> defaultColorNameμ λ°νν©λλ€.
λ²μ μ°μ°μ
κ°μ λ²μλ₯Ό νννκΈ° μν λ¨μΆν€μΈ μ¬λ¬ λ²μ μ°μ°μκ° μμ΅λλ€.
- νμ λ²μ μ°μ°μ
- λ°κ°λ°© λ²μ μ°μ°μ
- λ¨μΈ‘ λ²μ
1. νμ λ²μ μ°μ°μ
νμ λ²μ μ°μ°μλ ( a...b )κΉμ§μ λ²μλ₯Ό μ μνλ©° aκ°κ³Ό bκ°μ ν¬ν¨ν©λλ€.
⻠쑰건μ aκ° bλ³΄λ€ ν¬λ©΄ μ λ©λλ€
for-in loopμμ μμ£Ό μ΄μ©λ©λλ€.
for i in 1...3{
print(" \(i) times 3 is \( i * 3 )" )
}
// 1 times 3 is 3
// 2 times 3 is 6
// 3 times 3 is 9
2. λ°κ°λ°© λ²μ μ°μ°μ
λ°κ°λ°© λ²μ μ°μ°μλ ( a..<b )κΉμ§μ λ²μλ₯Ό μ μνλ©° aκ°μ ν¬ν¨νμ§λ§ bκ°μ ν¬ν¨νμ§ μμ΅λλ€.
⻠쑰건μ aκ° bλ³΄λ€ ν¬λ©΄ μ λ©λλ€. a == b κ°μ΄λ©΄ κ²°κ³Ό λ²μλ λΉμ΄μμ΅λλ€.
λ°°μ΄κ³Ό κ°μ 0λΆν° μμνλ μμ ν λ μ μ©ν©λλ€.
let names = [ "Anna" , "Alex" , "Brian" , "Jack" ]
let count = names.count // 4
for i in 0..<count{
print("Person \( i + 1 ) is called \( names[i])" )
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
3. λ¨μΈ‘ λ²μ
λ²μ μ°μ°μμ νμͺ½μμ κ°μ μλ΅ν μ μμ΅λλ€.
// namesλ μμ μμμ μ μν λ°°μ΄μ
λλ€.
// λ°°μ΄μ μΈλ±μ€2μμ λ°°μ΄μ λκΉμ§
for name in names[2...]{
print(name)
}
// Biran
// Jack
// λ°°μ΄μ μμλΆν° μΈλ±μ€2κΉμ§
for name in names[...2]{
print(name)
}
//Anna
//Alex
//Brian
//λ°°μ΄μ μμλΆν° μΈλ±μ€2 μ κΉμ§
for name i names[..<2]{
print(name)
}
//Anna
//Alex
//λ¨μΈ‘λ²μλ νΉμ κ°μ΄ ν¬ν¨ λμ΄ μλμ§ μ¬λΆλ νμΈν μμμ΅λλ€.
let range = ...5
range.contains(7) //false
range.contains(4) //true
range.contains(-1) //true
β» ( ...a )μΈ κ²½μ°μλ λ°λ³΅μ μ¬μ©ν μ μμ΅λλ€. -> λ°λ³΅μ μμν΄μΌ νλ μμΉκ° λͺ ννμ§ μμ΅λλ€.
( a... ) μΈκ²½μ° λ°λ³΅μ κ°λ₯ν©λλ€. νμ§λ§ 무νλλ‘ κ³μλκΈ° λλ¬Έμ λμκ°λ 루νμ λν λͺ μμ μ’ λ£ μ‘°κ±΄μ μΆκ°ν΄μΌ ν©λλ€.
λ Όλ¦¬ μ°μ°μ
λ Όλ¦¬ μ°μ°μλ boolean(λΆλ¦¬μΈ) λ Όλ¦¬ κ°μ trueμ falseλ‘ μμ νκ±°λ κ²°ν©ν©λλ€.
- λ Όλ¦¬ λΆμ NOT : !a
- λ Όλ¦¬ κ³± AND : a && b
- λ Όλ¦¬ ν© OR : a || b
1. λ Όλ¦¬ λΆμ NOT μ°μ°μ
λ Όλ¦¬ NOT μ°μ°μλ !a λ Όλ¦¬ κ°μ λ°μ νμ¬ true -> false μ΄ λκ³ false -> true κ°μ΄ λ©λλ€.
NOT μ°μ°μλ μ λμ¬ μ°μ°μμ΄λ©° 곡백 μμ΄ μ°μ°μ΄ μνλλ κ° λ°λ‘ μμ λνλ©λλ€.
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
Bool μμ λ° λ³μ μ΄λ¦μ μ£Όμ κΉκ² μ ννλ©΄ μ½λλ₯Ό κ°κ²°νκ² μ½μ μ μμΌλ©° μ΄μ€ λΆμ λλ νΌλλλ λ Όλ¦¬ λ¬Έμ₯μ νΌν μ μμ΅λλ€.
2. λ Όλ¦¬ AND μ°μ°μ
λ νΌμ°μ°μκ° λͺ¨λ 0μ΄ μλλ©΄ μ‘°κ±΄μ΄ μ°Έμ΄ λ©λλ€.
// μλ‘ λκ°μ΄ λ¬λΌ κ²°κ³Όλ falseλ‘ λμ΅λλ€.
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
3. λ Όλ¦¬ OR μ°μ°μ
λ νΌμ°μ°μ μ€ νλκ° 0μ΄ μλλ©΄ μ‘°κ±΄μ΄ μ°Έμ΄ λ©λλ€.
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
κΈ°λ³Έ μ°μ°μμ λν μ 리λ₯Ό ν΄λ³΄μμ΅λλ€!
λ€μμ λ¬Έμμ΄μ κ΄λ ¨νμ¬ μ 리λ₯Ό ν΄λ³΄κ² μ΅λλ€!!