Fonksiyonlar
Async Fonksiyonlar
afonksiyon, bekle ve üst düzey bekle.
afonksiyon eşzamansızdır. Task<T> görünmez; yazılan dönüş tipi beklenen değerin tipidir. bekle yalnız uygun bağlamlarda geçerlidir.
İlgili konular
Referans
Bu sayfa 5 katalog öğesini kapsar. Aşağıdaki maddeler language-spec, örnekler ve katalog alanlarından üretilmiştir.
'afonksiyon'
Nedir?
Eşzamansız fonksiyon. Task\<T\> kullanıcı sözdiziminde yok; yazılan dönüş tipi beklenen değerin tipidir.
Sözdizimi
afonksiyon kullanıcıGetir(id: tamsayı): Kullanıcı?{ => bekle db.kullanıcıBul(id)}Basit örnek
afonksiyon bekleVeYaz() { bekle 0.milisaniye syaz "Tamam"}bekle bekleVeYaz()Çıktı
Tamam
Dikkat edilmesi gerekenler
- Normal
fonksiyoniçindebekle→ US0835.
'bekle' değer
Nedir?
bekle, afonksiyon sonucunu bekler; tipi sonuç tipidir. Bağlam: üst düzey, afonksiyon, test, beklenenHata, eşişlem.
Sözdizimi
kullanıcı: Kullanıcı? = bekle db.kullanıcıBul(id)Basit örnek
bekle bekleVeYaz()Çıktı
Tamam
Geçersiz örnek
fonksiyon senkron() { bekle 0.milisaniye }US0835 AwaitContext
Dikkat edilmesi gerekenler
- Hedef uygun değilse US1522.
'bekle' süre
Nedir?
bekle bir süre ifadesi alırsa zamanlayıcıda bekler ve değer döndürmez. Async bağlamında (afonksiyon, üst düzey, test, eşişlem) geçerlidir.
Ne zaman kullanılır?
Belirli bir süre sonra devam etmek için kullanın (ör. bekle 2.saniye).
Sözdizimi
bekle 2.saniyeBasit örnek
bekle 0.milisaniyesyaz "ok"Çıktı
ok
Dikkat edilmesi gerekenler
- Taşma US1523.
- Üst düzey
beklegirişi eşzamansız yapar.
İlgili konular
Üst düzey 'bekle'
Nedir?
Dosya üst düzeyinde bekle geçerlidir. Dosyada üst düzey bekle varsa giriş noktası eşzamansızdır. Task kullanıcı sözdiziminde görünmez.
Çalışma zamanında ne olur?
Bağlayıcı üst düzeyde bekle'ye izin verir; ayrıca afonksiyon, test/beklenenHata ve eşişlem bağlamında da geçerlidir. Normal fonksiyon içinde bekle US0835 üretir. Yorumlayıcı bu bağlam kararını yeniden vermez; emit yolu üst düzey bekle'yi destekler.
Geçerli örnek
afonksiyon sayı(): tamsayı{ bekle 5.milisaniye => 7}değer: tamsayı = bekle sayı()syaz "{değer}"Çıktı
7
Geçersiz örnek
fonksiyon x(){ bekle 1.milisaniye}US0835 — AwaitContext; normal fonksiyon içinde bekle yazılamaz. Bağlama aşaması reddidir.
Dikkat edilmesi gerekenler
fonksiyoniçindebekle→ US0835 AwaitContext.- Üst düzey
bekleayrı bir anahtar kelime değildir; mevcutbekleifadesinin izin verilen bağlamıdır. - Süre
beklesi değer döndürmez;afonksiyonçağrısı beklenince sonuç tipi beklenen değerin tipidir.
İlgili konular
Async instance method
Nedir?
Sınıf/servis/kontrolcü gövdesinde afonksiyon örnek metodu eşzamansızdır; bu erişimi ve primitive/model dönüşleri desteklenir. Çağrıda bekle kullanılır. v0.2.0 derleyici SUPPORTED.
Sözdizimi
genel afonksiyon bul(id: tamsayı): Kullanıcı?{ => bekle servis.bul(id)}Basit örnek
servis KullanıcıServisi : tekil { genel afonksiyon bul(id: tamsayı): Kullanıcı? { => bu.kayıtlar.filtrele(^.id == id).ilkYadaBoş() }}Dikkat edilmesi gerekenler
- Olay işleyicisi async olamaz (US1524).
- async + ByRef (
ref/çıktı) gated — birleştirme. - Tüm sanal gönderim kombinasyonları veya statik tip-düzeyi
afonksiyonedge-case’leri overclaim edilmez.