2017-12-05 1 views
1

Ich versuche, von Java zu Kotlin zu konvertieren. Die aktuelle Java-Schnittstelle ist so etwas wie diese:Kotlin Lambdas ohne Objekte zu verwenden

interface MyInterface { 
    void foo(int x, int y); 
} 

MyInterface testing = (int a, int b) -> System.out.print("TESTING"); 

Meine aktuelle Kotlin Umwandlung ist:

interface MyInterface { 
    fun foo(x:Int, y:Int) 
} 

val kotlinConversion = object: MyInterface { 
    override fun foo(x: Int, y: Int) { 
     println("TESTING") 
    } 
} 

Gibt es eine Möglichkeit die Variable kotlinConversion so zu schreiben, dass es die in Java ähnlich ist, ohne die Funktion außer Kraft setzen?

+0

Benötigen Sie sie eine Schnittstelle sein? Ein Funktionstyp könnte möglicherweise genauso gut funktionieren. – chris

+3

Ich denke, damit wir alle antworten können, brauchen wir eine bessere Vorstellung von Ihrem Anwendungsfall. Was Sie in Kotlin haben, ist nicht, wie man es in Kotlin machen würde. Auf der anderen Seite, wenn Sie eine funktionale Schnittstelle in Java haben, können Sie ein Lambda verwenden, und es wird korrekt umgewandelt/umgewandelt. Wenn es alles Kotlin-Code ist, dann wird, wie Chris sagte, wahrscheinlich ein Funktionstyp sein. So etwas wie val kotlinConversion: (Int, Int) -> Einheit = {x, y -> println ("TEST")} – Mikezx6r

+2

Dies wurde hier im Kotlin Forum diskutiert. https://discuss.kotlinlang.org/t/kotlin-sam-traits-as-lambda-functions/279 @ Mikezx6r Antwort ist die vorgeschlagene Lösung. – jitinsharma

Antwort

3

Ohne die Funktion außer Kraft setzen Sie sich direkt wie auf diese Weise verwenden können

var kotlinConversion = { a: Int, b: Int -> print("TESTING") } 
Verwandte Themen