out out anahtar kelimesi ne anlamadım ve out anahtar kelimeyi kotlin'de bulamadık.kotlin
Burada örnek denetleyebilirsiniz:
List<out T>
herhangi biri bu anlamını açıklamak durumunda. Bu gerçekten takdir olurdu.
out out anahtar kelimesi ne anlamadım ve out anahtar kelimeyi kotlin'de bulamadık.kotlin
Burada örnek denetleyebilirsiniz:
List<out T>
herhangi biri bu anlamını açıklamak durumunda. Bu gerçekten takdir olurdu.
bir tür:
val doubleList: List<Double> = listOf(1.0, 2.0) val numberList: List<Number> = doubleList
T demektir covariant olduğunu Parametre sınıfı Cı T > güvenliC < > Türetilmiş bir süper tip olabilir üzerinden, Cı < Taban ilan edilir.
Bu
örneğin içinde ile kontrastComparable<in T>
bunu yapmak için: bir sınıf tipi parametre TCı ilan edildiği
: T anlamına
fun foo(numberComparable: Comparable<Number>) { val doubleComparable: Comparable<Double> = numberComparable // ... }
kontravaryant olduğu’de , Cı < Türetilmiş > güvenli bir şekilde Cı <Base> bir süper tip olabilir.
başka yolu da hatırlamak: yılında
Tüketici, Yapımcı dışarı.
Kotlin
List<out T>
tipi boyutu gibi sadece okuma işlemleri sağlayan bir arabirimdir tieno benzeri almak ve bakın. Java'da olduğu gibi,Collection<T>
'dan miras alır ve bu daIterable<T>
'dan miras alır. 'un listeyi değiştirdiği yöntemler,MutableList<T>
arabirimiyle eklenir. Bu desen KOTLIN yılında, derleyici bu tür bir şey açıklamak için bir yol yoktur,Set<out T>/MutableSet<T>
veMap<K, out
V>/MutableMap<K, V>
Ve bunun için de geçerlidir. Buna bildirim alanı varyansı denir: 'a (üretilen)
Source<T>
üyelerinden döndüğünden ve hiçbir zaman tüketilmediğinden emin olmak için Kaynak T parametresine açıklama ekleyebiliriz.> abstract class Source<out T> { > abstract fun nextT(): T } > > fun demo(strs: Source<String>) { > val objects: Source<Any> = strs // This is OK, since T is an out-parameter > // ... }
genel kural olduğu: Bu biz değiştirici sağlamak yapmak için bir tür parametresi bir sınıf
C
aitT
dışarı ilan edildiğinde, sadeceC
üyeleri dışarı-pozisyonunda meydana gelebilir, ancakgeri dönüşündeC<Base>
, güvenli bir şekildeC<Derived>
bir supertype olabilir. "Akıllı bir deyişle" Inonlar sınıf
C
parametreT
yılında bildirdiğinden, ya oT
bir kovaryant tür parametresi olduğunu söylüyorlar. C'yi bir T's üreticisi olarak düşünebilirsiniz veT
'un bir kullanıcısı DEĞİLDİR. Dışarı değiştirici, varyans açıklaması olarak adlandırılır ve tür parametre bildirim sitesinde sağlanan olduğundan, bildirim alanı varyansı hakkında konuşuruz. Bu, Java'nın kullanım yerinde bulunan joker karakterlerin türlerini kovaryant haline getirdiği kullanım sitesi varyansının tersidir.List<out T>
bunu yapabilirsiniz: Bu imza ile
List<out T> is like List<? super T> in Java
ve
val value : List<Any> = listOf(1,2,3)
//since List signature is List<out T> in Kotlin
gibi şeyler yapabiliriz KOTLIN Örneğin
bakınız ben biri için en önemli nokta 'Listesini görme düşünüyorum 'açıklaması 'dışarı' yapar değişmez (dışarıda olmayan değişebilir koleksiyonlara kıyasla). Cevapta bahsetmeye ve vurgulamaya yardımcı olabilir.Örtük döküm, ana noktadan ziyade bunun bir sonucudur (List 'a yazamıyor, Liste 'un bir referansı olması güvenli değildir). –
minsk
Üzgünüz, Ama yine de anlayamadım. –