İçeriğe geç

Swift 3 ile Function Currying işlemi

Swift 3

Merhabalar bu yazımda Swift 3 ile beraber iç içe nested fonksiyon nasıl yazarız ve temiz bir sytnax düzeninde nasıl oluştururuz örneğini vereceğim.

Bazı durumlarda iç içe fonksiyonlar kullanmak isteyebiliriz yada yazdığımız kodu nested formatta derlenmesini isteyebilirsiniz algoritmik olarak. Bu gibi durumlarda sizin için uygun kullanım aşağıda vereceğim örnekteki kullanımlardır.

func chaFunc(_ x:Int) -> (Int) -> Int {
     func inChaFunc(_ y:Int) -> Int {
        return x + y
    }
    return inChaFunc
}

chaFunc(2)(104) // 106

Bu kullanım normal bir şekilde iç içe geçmiş fonksiyon kullanımı ancak aşağıdaki kullanım daha modern ve tavsiye edilen Swift 3 kalıbında.

func fourChainedFunctions(_ a: Int) -> ((Int) -> ((Int) -> ((Int) -> Int))) {
    return { b in
        return { c in
            return { d in
                return a + b + c + d
            }
        }
    }
}

fourChainedFunctions(1)(2)(3)(4) // 10

func add(_ a: Int) -> ((Int) -> Int) {
    return { b in a * b }
}

add(2)(9) // 18

func chainedStr(_ a:String) -> ((String) -> (String) -> String) {
    
    return { b in
        return { c in
            return "\(a) \(b) \(c)"
        }
    }
}

chainedStr("A")("B")("C") // A B C

return kalıbını iç içe kullanarak bir sonraki fonksiyonu return ediyoruz ve nested yapı oluşuyor.

Not: Rastgele olarak verdiğimiz b,c,d gibi fonksiyon isimlerini istediğiniz gibi verebilirsiniz. Burdaki amaç karışıklık olmaması adına düzgün bir sırada vermeniz olacaktır.

 

Tarih:SwiftSwift 3

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca