için ilk veya son öğe olmayan bir List
her öğeyi döndüren bir işlev yazmak istiyorum (bir geçiş noktası). İşlev, giriş olarak genel bir List<*>
alır.Kotlin: List ile nasıl çalışılır atmalarını: İşaretlenmemiş Cast: kotlin.collections.List <Kotlin.Any?> kotlin.colletions.List <Waypoint>
denetlenmeyen Oyuncular:: kotlin.collections
fun getViaPoints(list: List<*>): List<Waypoint>? { list.forEach { if(it !is Waypoint) return null } val waypointList = list as? List<Waypoint> ?: return null return waypointList.filter{ waypointList.indexOf(it) != 0 && waypointList.indexOf(it) != waypointList.lastIndex} }
List<*>
içinList<Waypoint>
döküm, ben uyarı olsun: Listenin elemanları tipWaypoint
arasında ise bir sonuç yalnızca döndürülmelidir. Liste
Ben başka türlü uygulamanın bir yolunu anlamaya olamaz kotlin.colletions.List için. Bu uyarıyı bu uyarı olmadan uygulamak için doğru yol nedir?
Mükemmel Yanıt! List.filterIsInstance() çözümünü seçtim çünkü en temiz çözüm olduğunu düşünüyorum. –
lukle
kullanmak eğer Not: [ 'filterIsInstance'] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter-is-instance.html) ve orijinal liste farklı tipte elemanlar içerir kodunuz onları sessizce filtreleyecek. Bazen istediğin budur ama bazen bir "IllegalStateException" veya benzer bir atılmış olabilir. Daha sonra durumda ardından denetlemek için kendi yöntemini oluşturmak ve sonra yayınlayabileceğim: ' – mfulton26
Not {R (bu R)} it.apply {onay}' satır içi eğlence iterable <*> .mapAsInstance() = haritası bu '.apply', lambda'nın dönüş değerini döndürmez, alma nesnesini döndürür. Büyük olasılıkla bir null döndürme seçeneğini kullanmak istiyorsanız '.takeIf' kullanmak isteyebilirsiniz. –
bj0