küçük bilgi, birinci sınıf işlevi hakkında argüman olarak işlevlerini geçirmeyi desteklediğidir ve bunları başka bir işlevdeki değerler olarak da gönderebiliriz ... Swift programlama dilinde çok yeniyim lütfen herhangi bir örnek.“İşlevler birinci sınıf bir tiptir” hızlı mı?
cevap
bir bu davranışı göstermek için çok basit bir örnek:
func functionA() {
println("Hello by functionA")
}
func executeFunction(function:() ->()) {
function()
}
executeFunction(functionA)
sözcük ortamdan bir değer yakalarken bir işlevi döndüren bir fonksiyonu:
dizisinin bir fonksiyonu Değer, test edilen dizinin aşırı değeri ise, bir Boole döndüren bir değerin bir işlevini döndüren bir test yüklemesinin bir işlevini döndüren karşılaştırmalar.
Birinci Sınıf işlevleri başka işlevleri döndürebilir fonksiyonlardır (Currying). Örneğin :
func operate(operand: String) -> ((Double, Double) -> Double)?{
func add(a: Double, b: Double) -> Double {
return a + b
}
func min(a: Double, b: Double) -> Double{
return a - b
}
func multi(a: Double, b: Double) -> Double {
return a * b
}
func div (a: Double, b: Double) -> Double{
return a/b
}
switch operand{
case "+":
return add
case "-":
return min
case "*":
return multi
case "/":
return div
default:
return nil
}
}
bağımsız değişkenler olarak iki çift alır ve bir çift döndüren bir işlev döner operate
işlev.
Bu fonksiyonun kullanımıdır:
var function = operate("+")
print(" 3 + 4 = \(function!(3,4))")
function = operate("-")
print(" 3 - 4 = \(function!(3,4))")
function = operate("*")
print(" 3 * 4 = \(function!(3,4))")
function = operate("/")
print(" 3/4 = \(function!(3,4))")
Eğer bu işlevleri faydalılar haline dönmek için Birinci Sınıf işlevleri kullanarak, bir fonksiyonun uygulanması umurumda değil
. Ayrıca, bazenadd
,
min
gibi işlevlerin geliştirilmesinden (veya yetkilendirilmesinden) siz sorumlusunuz. Birisi size bu işlevleri döndüren bir First-Class işlevi geliştirirdi ve devam etmek sizin sorumluluğunuzdadır ....
Detaylı Açıklama için teşekkürler – skkrish
- 1. Python modülleri birinci sınıf vatandaşlar mı?
- 2. Birinci sınıf listeye atla
- 3. Haskell lens kütüphanesiyle, alıcıları "birinci sınıf" olarak nasıl ele alabilirim?
- 4. Python'da işlevler var mı?
- 5. Neden birinci sınıf bir işlevin türü byrefs içermiyor?
- 6. C++ saf sanal işlevler olmadan soyut sınıf?
- 7. İç içe geçmiş işlevler için eşdeğer bir eşdeğer var mı?
- 8. Perl: listenin birinci elemanına eşleşme
- 9. INolifyPropertyColged işlevler bir bool []?
- 10. Vim'de iki satırı nasıl hızlı bir şekilde birleştirebilirim? birinci hattının bir devamıdır için
- 11. Bu bir İç Sınıf mı
- 12. Kategori için hızlı sınıf nasıl oluşturulur?
- 13. Log.Fatalln çağrılırken ertelenen işlevler çağrıldı mı?
- 14. Bir dersi kullanmak veya uzatmak daha mı iyi? (hızlı)
- 15. Yerel olarak bağlı olmadığınızda çekirdek işlevler nasıl daha hızlı çalışır?
- 16. ImageMagick'den daha hızlı bir şey var mı?
- 17. C++: Sınıf üyesi işlev geri aramaları olarak işlevler
- 18. Maksimum hücreden birinci hücreye bir sütun seçin
- 19. Objective-C'deki işlevler üzerinde blokları kullanmanın bir avantajı var mı?
- 20. Hızlı, sınıf düzeyi statik değişkenlere sahip mi?
- 21. JavaScript'in birinci sınıf işlevleri varsa, neden bu işlevi değişken bir işte çağırmıyorsunuz?
- 22. Sınıf üyesi neden aynı isimle gölge içermeyen işlevler çalıştırıyor?
- 23. Sınıf üyeleri olan işlevler için CreateThread'i nasıl kullanıyorsunuz?
- 24. Çerçeve başlığım için nasıl hızlı bir sınıf ekleyebilirim?
- 25. XCode'da/* ve */hızlı bir şekilde nasıl silinir
- 26. Makefile'deki İşlevler
- 27. Bir sınıf içinde $ _POST girişi patlatın mı?
- 28. nasıl onun TRttiType bir sınıf örneğini mı?
- 29. Can -verbose: sınıf bir sınıftan mı çalışıyor?
- 30. Bir sınıf var mı kontrol edin
[İşlev Türleri] 'ni okumak isteyeceksiniz (https://developer.apple.com Apple'ın Swift kitabındaki /library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-XID_270) bölümü. –