()
türünde bir parametre ileten bir olay alıyorum.Hızla '()' tipi nedir?
Bu boş bir mu ...?
Ben ifade bu tür bahsediyorum:
let x =()
()
türünde bir parametre ileten bir olay alıyorum.Hızla '()' tipi nedir?
Bu boş bir mu ...?
Ben ifade bu tür bahsediyorum:
let x =()
()
bir tip (ve Void
boş demet türü için bir tür takma) ve bu tip tek değeri hem de. Yani
let x =()
değeri()
ile tip()
(aka Void
) sabit bir özelliği olarak x
tanımlar.
Eşdeğer ifadeleri bir tür ama bir değerdir değil
let x = Void // error: expected member name or constructor call after type name
Void
çünkü
let x:() =()
let x:Void =()
ama olurdu. fonksiyon türlerini tanımlarken
hiçbir parametreleri ve/veya herhangi bir dönüş değeri ile hiçbir dönüş değeri için, boş bir parametre listesi için ve Void
()
kullanmak için bir konsensüs var gibi görünüyor. Bu, örneğin, UIKit tamamlama işleyicilerinde veya GCD gönderim sıralarına gönderilen yürütme bloklarında görülebilir;
func sync(execute block:() -> Void)
A, hem (() ->() "ve" (Void) -> Void "seçeneklerine rağmen, parazitsiz ve dönüş değeri olmayan işlevlerin tanımlanmasına ilişkin fikir birliğinin"() -> Void "olduğunu eklemektedir. – Sulthan
@Sulthan: Haklısınız ve öneri için teşekkürler. Ancak, henüz bulamadığım bir referansla bunu yedeklemeyi tercih ederim. –
Tüm tamamlayıcılar için Apple referans belgelerini saymazsanız, bir referans olduğunu düşünmüyorum :) – Sulthan
Evet, boş kayıt düzeni aka Void
bu.
standart Void
tip olarak tanımlanır:
typealias Void =()
açıkça bir dönüş türünü belirtmeyen işlevlerin dönüş türü; boş bir tuple (yani,
()
).
Swift grammar için docs baktığımızda:
Tüm tanımlama grubu türleri boş tuple türü için
type alias
olanVoid
,()
hariç iki veya daha fazla türlerini içerir.
tuple-type → () | ( tuple-type-element , tuple-type-element-list)
tuple-type-element-list → tuple-type-element | tuple-type-element , tuple-type-element-list
tuple-type-element → element-name type-annotation | type
element-name → identifier
nedenle evet sıfır türleri/elemanlarının bir demet olup.
, dilbilgisi belgelerinden de. > * Tüm tuple tipleri, boş tuple türü için bir tür takma ad olan 'Void' haricinde iki veya daha fazla türde içerir, '()' *. –
@GabrielePetronella Bu cümleyi işaret ettiğiniz için teşekkür ederim. – luk2302
@xoudini: Tam olarak ilgili, ancak tam olarak aynı değil (bence). Bu soru tür olarak '()' hakkındadır. Burada '()' bir değerdir ve 'Void' ile değiştirilemez. 'Let x = Void' derlemez. –
Burada bir değer olarak '()' nin açık kullanımları hakkında ilginç tartışma: [Boş tuplelerin() örneklerinin (yani, 'türkçe' Boşluk 'örneklerinin olası herhangi bir açık kullanımı var mı?] (Http://stackoverflow.com/q/34561452/2976878) – Hamish
@MartinR İyi nokta ve başka bir bakışta, soruların tamamen aynı olmadığına katılıyorum. – xoudini