λ°μν
1. μμΈ μ²λ¦¬
μ€λ₯ μ²λ¦¬μ κ°λ
- νλ‘κ·Έλ¨μ μλ¬κ° λ°μνμ λ, μ΄λ₯Ό κ°μ§νκ³ λ³΅κ΅¬νλ νλ‘μΈμ€
- λͺ¨λ νλ‘κ·Έλ¨μ΄ νμ μνλλλ‘ μ νν λμνλ€λ 보μ₯μ΄ μκΈ° λλ¬Έμ μ€λ₯κ° λ°μν μ μμμ νμ κ³ λ €ν΄μΌ ν¨
guard
guard 쑰건 else {μ‘°κ±΄μ΄ κ±°μ§μΌ λ μ€νλ ꡬ문}
// someValue κ° 0μ΄ μλ κ²½μ°μλ§ μΆλ ₯
guard someValue != 0 else { return }
print(someValue)
- 쑰건λ€μ κ±Έλ¬λΌ λ μ¬μ©
- κ°λ
μ±μ μν΄ μ¬μ©
- 쑰건μμ μ΄ ν¨μκ° μννλλ° νμν 쑰건μ κ·Έλλ‘ μ λλ€λ μ μμ guard κ΅¬λ¬Έμ΄ μ½λλ₯Ό λΆμν λ κ°λ μ±μ΄ μ’μμ§
func printMessage(_ message: String?) {
if message == nil { return }
print(message!) // μ΄λ―Έ nil κ²μ¬λ₯Ό νμ!
}
printMessage(string)
func printMessage(_ message: String?) {
guard message != nil else { return }
print(message!)
}
printMessage(string)
- μ΅μ
λ λ°μΈλ©
- guardλ₯Ό μ¬μ©νλ©΄ if λ‘ μ΅μ λ λ°μΈλ©νμ λμ λ¬λ¦¬ { } κ΄νΈ λ°μμλ μ¬μ© κ°λ₯
var string:String? = "hello"
func printMessage(_ message: String?) {
guard let letMessage = message else { return }
print(letMessage)
}
printMessage(string)
func printMessage(_ message: String?) {
if let letMessage = message{
print(letMessage)
} else { return }
}
printMessage(string)
do-catch
- throw
- μ€λ₯ λμ§κΈ°(μ€λ₯λ₯Ό λμ§λ€ = μ€λ₯λ₯Ό μ²λ¦¬ν΄μ£Όλ κ³³μΌλ‘ μ λ¬ν΄μ€λ€)
- throwsλ μ€λ₯κ° λ°μν κ°λ₯μ±μ΄ μλ λ©μλ μ λͺ© μμ μμ±
- throw ( ‘s’ μμ)μ μ€λ₯κ° λ°μν ꡬκ°μ μμ±
- μ€λ₯ λμ§κΈ°(μ€λ₯λ₯Ό λμ§λ€ = μ€λ₯λ₯Ό μ²λ¦¬ν΄μ£Όλ κ³³μΌλ‘ μ λ¬ν΄μ€λ€)
func printNumber(_ number: Int)throws -> Int {
// 1
var text = ""
guard number > 0 else {
throw TestError.outOfRange
// 2
}
return text
}
- try
- ‘μ΄ ν¨μκ° μ€λ₯κ° λ°μν μλ μλλ°, νλ² μλν΄λ³Όκ²μ.’
let resultNumber = try object.printNumber(-20)
- do-catch
do {
let resultNumber = try object.printNumber(-20)
// μμ ν¨μκ° μ€λ₯μ΄ ν¨μκ° μ€λ₯κ° λ°μν μλ μλλ°, νλ² μλν΄λ³Όκ²μ.
} catch {
print(error)
// μ€λ₯λ₯Ό μ‘μΌλ©΄ errorλ₯Ό νλ¦°νΈν©λλ€.
}
2.ν¨μ
ν¨μμ μ μ
- ν¨μλ νΉμ μμ μ μννκΈ° μν΄ ν¨κ» ꡬμ±λ μΌλ ¨μ λͺ λ Ήλ¬Έ
- ν¨μλ₯Ό μ μΈν λλ func ν€μλ μ¬μ©
- (n: Int) → Int μ κ°μ νμμΌλ‘ νλΌλ―Έν°μ λ°ννμ μ μ
- νλΌλ―Έν°μ λ°ν κ°μ λͺ¨λ νμ μΌλ‘ μ μΈ κ°λ₯(Int, String, Bool, Array, optional…)
- νλΌλ―Έν°λ letμΌλ‘ λ³κ²½ λΆκ°
/*
func ν¨μλͺ
(νλΌλ―Έν°: λ°μ΄ν° νμ
) -> λ°ννμ
{
return
}
*/
func add(n: Int) -> Int {
return n+2
}
let result = add(n: 2)
print(result) //4
ν¨μμ νμμ±
- μ¬μ¬μ©μ±
- ν¨μλ₯Ό μ¬μ©νλ©΄ λμΌν μ½λλ₯Ό λ°λ³΅ν΄μ λ€μ μμ±νμ§ μκ³ λ μ¬λ¬ λ² μ¬μ¬μ©ν μ μλ μ½λλ₯Ό μμ±ν μ μμ
- 볡μ‘νκ±°λ λ°λ³΅μ μΈ μμ μ μ²λ¦¬ν λ λ§μ μκ°κ³Ό λ Έλ ₯μ μ μ½ν μ μμ
- λͺ¨λμ±
- ν¨μλ 볡μ‘ν μμ μ λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ μ½λ μ‘°κ°μΌλ‘ λΆν΄νμ¬ μ΄ν΄νκ³ μ μ§ κ΄λ¦¬νκΈ° μ¬μ
- μ½λλ₯Ό λͺ¨λννμ¬ λ 립μ μΌλ‘ ν μ€νΈνκ³ λλ²κΉ ν μ μλ λ³λμ κ΅¬μ± μμλ‘ λλ μ μμμ μλ―Έ
- μΆμν
- ν¨μλ₯Ό μ¬μ©νλ©΄ μμ μ ꡬν μΈλΆ μ¬νμ μΆμννκ³ μμ μ μννκΈ° μν κ³ κΈ μΈν°νμ΄μ€λ₯Ό μ 곡ν μ μμ
- ꡬν μΈλΆ μ¬νμ μ΅μνμ§ μμ λ€λ₯Έ κ°λ°μλ₯Ό μν΄ μ½λλ₯Ό λ μ½κΈ° μ½κ³ μ¬μ©νκΈ° μ½κ² λ§λλλ€.
- μΊ‘μν
- ν¨μλ μ½λμ λ°μ΄ν°λ₯Ό μΊ‘μννλ λ° λμμ΄ λ¨
- μ¦, μμ μ ꡬν μΈλΆ μ 보λ₯Ό μ¨κΈΈ μ μκ³ μ½λμ μνΈ μμ©νκΈ° μν κ³΅μ© μΈν°νμ΄μ€λ§ λ ΈμΆν μ μμ
- μλνμ§ μμ λΆμμ©μ΄λ μ½λμ λ€λ₯Έ λΆλΆκ³Όμ μνΈ μμ©μ λ°©μ§ν μ μμ
- μ½λ ꡬμ±
- ν¨μλ μ½λλ₯Ό λ Όλ¦¬μ κ·Έλ£ΉμΌλ‘ ꡬμ±νμ¬ μ½λλ₯Ό λ μ½κ² νμνκ³ μ΄ν΄ν μ μλλ‘ λμμ€
- μ½λ μ€λ³΅μ λ°©μ§νκ³ μ½λλ² μ΄μ€μ μ λ°μ μΈ λ³΅μ‘μ±μ μ€μ΄λ λ° λμμ΄ λ μ μμ
νλΌλ―Έν°(Parameters)μ λ°ν κ°
- νλΌλ―Έν°κ° μλ ν¨μ
func sayHelloWorld() -> String {
return "hello, world"
}
print(sayHelloWorld()) // hello, world
- μ¬λ¬κ°μ νλΌλ―Έν°λ₯Ό μ¬μ©νλ ν¨μ
func add(a: Int, b: Int) -> Int {
return a+b
}
print(add(a: 3, b: 4)) // 7
- λ°ν κ°μ΄ μλ ν¨μμ¬λ¬κ°μ κ°μ λ°ννλ ν¨μ (ννλ‘ λ°ν)
func calculator(a: Int, b: Int) -> (sum: Int, sub: Int) {
return (a+b, a-b)
}
let result = calculator(a: 3, b: 4)
print(result.sum, result.sub) // (7, -1)
ν¨μ μΈμ λΌλ²¨κ³Ό νλΌλ―Έν° μ΄λ¦
- μΈμ λΌλ²¨ μ§μ : ν¨μ νΈμΆ μ μ¬μ©ν νλΌλ―Έν° μ΄λ¦ μ§μ
func printName(insertName name: String){
print( "my Name is " + name + ".") //my Name is hyebin.
}
printName(insertName: "hyebin")
- μΈμ μλ΅: νλΌλ―Έν° μμ “_”λ₯Ό λΆμ¬ ν¨μ νΈμΆ μ νλΌλ―Έν° μ΄λ¦ μλ΅
func printName(_ name: String, _ age: Int){
print( name, age) //hyebin 14
}
printName("hyebin" , 14)
- κΈ°λ³Έ νλΌλ―Έν° κ°
- ν¨μμ νλΌλ―Έν°μ κΈ°λ³Έ κ°μ μ€μ
- κΈ°λ³Έκ°μ΄ μ€μ λ νλΌλ―Έν°λ ν¨μ νΈμΆ μ μλ΅ κ°λ₯
func printName(name: String, age: Int = 24){
print( name, age) //hyebin 24
}
printName(name: "hyebin") //hyebin 24
printName(name: "yyy", age: 90) //yyy 90
- κ°λ³ νλΌλ―Έν°
- νλΌλ―Έν° λ°μ΄ν° νμ λ€μ ... ν€μλ μ¬μ©
- κ°λ³ νλΌλ―Έν° λ€μ μλ νλΌλ―Έν°λ μΈμ μλ΅ λΆκ°
- κΈ°λ³Έκ°μ κ°μ§ μ μμΌλ©°, νλμ νλΌλ―Έν°μμλ§ μ¬μ© κ°λ₯
- μ λ ₯ κ°μ μκ° μ¬μ μ μλ €μ§μ§ μκ³ λ°νμ μ λ¬λΌμ§ μ μλ κ²½μ°μ μ μ©
- κ°λ³ νλΌλ―Έν°λ‘ μ λ¬λ κ°μ ν¨μ λ΄λΆμ λ°°μ΄λ‘ μμ§
func avg(_ numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
print(avg(1, 2, 3, 4, 5)) // 3.0
print(avg(3, 8.25, 18.75)) //10.0
- μΈ-μμ νλΌλ―Έν°
- ν¨μμμ μ§μ νλΌλ―Έν° κ°μ μ κ·Όν μ μλλ‘ νλ νλΌλ―Έν° (νλΌλ―Έν°λ₯Ό varλ‘ μ¬μ©)
- ν¨μμ μΈμμ λ³μλ₯Ό λ£μ λ & ν€μλ μ¬μ©
- ν¨μ λ΄λΆμ λ³μ κ°μ μμ ν΄μΌ νκ³ ν΄λΉ λ³κ²½ μ¬νμ ν¨μ μΈλΆμλ λ°μνκ³ μ ν λ μ μ©
- in-out λ§€κ°λ³μλ λ³μμλ§ μ¬μ©ν μ μμ
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \\(someInt), and anotherInt is now \\(anotherInt)")
// someInt is now 107, and anotherInt is now 3
ν¨μ νμ
- λͺ¨λ ν¨μλ νλΌλ―Έν° νκ³Ό(parameter types) λ°ν ν(return type)μΌλ‘ ꡬμ±λ νΉμ ν ν¨μ νμ μ κ°μ§
- λ³μ νμΌλ‘
- λ³μ λλ μμ μ νμΌλ‘ μ¬μ© κ°λ₯
- ν¨μλ₯Ό κ°μΌλ‘ μ μ₯νκ³ λμ€μ νΈμΆ κ°λ₯
- λ³μλ μμμ ν¨μλ₯Ό ν λΉν λ ν¨μ νμ μ μΈνμ§ μμλ νμ μΆλ‘ ν΄ μλμΌλ‘ ν¨μ ν λΉ κ°λ₯
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b
}
var mathFunction: (Int, Int) -> Int = addTwoInts
//var mathFunction = addTwoInts
print(mathFunction(2,3))//5
- νλΌλ―Έν° νμΌλ‘
- ν¨μμ λν νλΌλ―Έν°μ νμ μΌλ‘ μ¬μ© κ°λ₯
- ν¨μλ₯Ό λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬ν μ μμΌλ©° μ λ¬λ ν¨μλ₯Ό νΈμΆ κ°λ₯
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b
}
func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) {
print("Result: \\(mathFunction(a, b))")
}
printMathResult(addTwoInts, 3, 5) //"Result: 8"
- λ°ννμΌλ‘
- ν¨μμ λ°ν νμ μΌλ‘λ μ¬μ© κ°λ₯
- ν¨μμμ ν¨μλ₯Ό λ°ν κ°λ₯
func stepForward(_ input: Int) -> Int {
return input + 1
}
func stepBackward(_ input: Int) -> Int {
return input - 1
}
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
return backward ? stepBackward : stepForward
}
var currentValue = 3
let moveNearerToZero = chooseStepFunction(backward: currentValue > 0)
while currentValue != 0 {
print("\\(currentValue)... ")
currentValue = moveNearerToZero(currentValue)
}
print("zero!")
/*
3...
2...
1...
zero!
*/
μ€μ²©ν¨μ
- μ€μ²© ν¨μλ λ΄λΆ ν¨μλ₯Ό νΈμΆνμ¬ μΈλΆ ν¨μλ₯Ό νΈμΆνλ κΈ°λ₯μ μ 곡
func calcDecrement(forDecrement total: Int) -> () -> Int {
var overallDecrement = 0
func decrementer() -> Int {
overallDecrement -= total
return overallDecrement
}
return decrementer
}
let decrem = calcDecrement(forDecrement: 30)
print(decrem()) // -30
- ν¨μμ μ€λ²λ‘λ©(Overloading)
- ν¨μ μ΄λ¦μ κ°μ§λ§ νλΌλ―Έν°, 리ν΄νμ λ±μ λ€λ₯΄κ² νμ¬ ν¨μλ₯Ό μ€λ³΅μΌλ‘ μ μΈ
- κ°μ μ΄λ¦μ ν¨μλ₯Ό μ μΈνλ©΄ μ€λ₯ λ°μ
- νλΌλ―Έν°μ 리ν΄νμ μ λ€λ₯΄κ² νλ©΄ μ€λ₯κ° λ°μνμ§ μμ
- κ°μ λμμ νμ§λ§ νλΌλ―Έν° νμ , λ¦¬ν΄ νμ μ΄ λ€λ₯Έ ν¨μλ₯Ό κ°μ μ΄λ¦μΌλ‘ μ μΈνμ¬ μ½λλ₯Ό μ§κ΄μ μΌλ‘ μμ± κ°λ₯
func sum() { }
func sum() { } // Invalid redeclaration of 'sum()'
func sum() { }
func sum(n: Int) { }
func sum() -> Int { return 0 }
// λͺ¨λ λ μλ₯Ό λνλ λμμ νμ§λ§ νμ
μ λ°λΌ μ΄λ¦μ΄ λ¬λΌμ§
func sumInt(_ a: Int, _ b: Int) -> Int {
return a + b
}
func sumDouble(_ a: Double, _ b: Double) -> Double {
return a + b
}
func sumString(_ a: String, _ b: String) -> String {
return a + b
}
// sumμΌλ‘ ν¨μμ μ΄λ¦μ λμΌνκ² νκ³ , νλΌλ―Έν°μ λ¦¬ν΄ κ°μ νμ
λ§ λ³κ²½
func sum(_ a: Int, _ b: Int) -> Int {
return a + b
}
func sum(_ a: Double, _ b: Double) -> Double {
return a + b
}
func sum(_ a: String, _ b: String) -> String {
return a + b
}
βν¨μμ λ©μλμ μ°¨μ΄
λ©μλ: ν¨μλ₯Ό νΈμΆνλ κ°μ²΄κ° μλ κ²½μ° → a.remove()
ν¨μ: ν¨μλ₯Ό νΈμΆνλ κ°μ²΄κ° μλ κ²½μ° → func remvoe(), remove()
λ°μν
'β¨οΈ Language > swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] ν΄λμ€μ ꡬ쑰체 (0) | 2024.03.19 |
---|---|
[Swift] ν΄λ‘μ (1) | 2024.03.18 |
[Swift] 쑰건/λ°λ³΅λ¬Έ (1) | 2024.03.17 |
[Swift] μ½λ μ νμ (0) | 2024.03.16 |
[Swift] λ³μμ νλ‘νΌν°2 (1) | 2024.03.15 |