Uygulamanın aşırı yük çözünürlüğü ile belirlendiği basit bir fabrika modeline sahibim. Sorun, Kotlin derleyicisinin inline lambda için "Aşırı yük çözünürlüğü belirsizliği" ile ilgili şikâyette bulunması.Kotlin: Inline lambda ve aşırı yük çözünürlüğü belirsizliği
class Foo(){
companion object Factory {
fun create(x: Int, f: (Int) -> Double) = 2.0
fun create(x: Int, f: (Int) -> Int) = 1
}
}
fun main(args:Array<String>){
val a = Foo.create(1,::fromDouble) //OK
val b = Foo.create(1,::fromInt) //OK
val ambiguous = Foo.create(1){i -> 1.0} //Overload resolution ambiguity?
}
fun fromDouble(int:Int) = 1.0
fun fromInt(int:Int) = 1
Kotlin derleyici çözmek aşırı yük çözünürlük neden satır içi lambda belirsiz olarak kabul edilir ve yok nasıl
?
Bu bir hata gibi görünüyor, çünkü eğer lambda'yı “Int (Int) -> Double” gibi (Int) -> Double (Çift) olarak çevirirseniz, hiçbir belirsizlik olmaz, ancak cast gerekmediğini söylüyor. Ayrıca, lambda'yı "val l = {i: Int -> 1.0}' a ayıklayıp kullanırsam, yine bir belirsizlik olmaz. Lütfen bu sorun için hata izleyicide arama yapın ve eğer yeni bir dosya yoksa yeni bir dosya gönderin: https://youtrack.jetbrains.com/issues/KT – hotkey
Bir başka ilginç şey, lambda'yı @hotkey yaparsanız, IDE Bu gerekli değil. Ama onu kaldırdığın an, belirsizlikten şikayet ediyor. –
Giriş için teşekkürler! Muhtemelen bir böcek olduğunu düşündüm. Https://youtrack.jetbrains.com/issue/KT-11265 –