-
κΈ°λ³Έ μ°μ°μ ( Basic Operators )Swift 2022. 7. 16. 17:38
μλ νμΈμ! 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!"
κΈ°λ³Έ μ°μ°μμ λν μ 리λ₯Ό ν΄λ³΄μμ΅λλ€!
λ€μμ λ¬Έμμ΄μ κ΄λ ¨νμ¬ μ 리λ₯Ό ν΄λ³΄κ² μ΅λλ€!!
'Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ μ΄λ¬Έ ( Control Flow ) (0) 2022.07.26 μ λμ½λ , μμ€ν€μ½λ ( Unicode , ASCII ) (1) 2022.07.25 컬λ μ νμ ( Collection Types ) (1) 2022.07.18 λ¬Έμμ΄ λ° λ¬Έμ ( Strings and Characters ) (0) 2022.07.17 ν¨μ ( Functions ) (0) 2022.06.16