gpt4 book ai didi

kotlin - Kotlin是否允许在lambda上使用扩展方法?

转载 作者:行者123 更新时间:2023-12-02 13:21:37 24 4
gpt4 key购买 nike

我试图创建一个很好的类似于SAM的API来实例化抽象类,因为我不喜欢对象表达式。我正在尝试做类似的事情:

{my lambda code here}.my_extension_function()

Kotlin有可能吗?

最佳答案

是的,有可能。示例代码是:

// extension function on lambda with generic parameter
fun <T> ((T) -> Unit).my_extension_function() {
// ...
}

// extension function on lambda without generic parameter
fun (() -> Unit).my_extension_function() {
// ...
}

并使用它,例如,像这样:
// lambda variable with generic parameter
val lambda: (Int) -> Unit = {
// 'it' contains Int value
//...
}

// lambda variable without generic parameter
val lambda: () -> Unit = {
//...
}

lambda.my_extension_function()

// also we can call extension function on lambda without generic parameter like this
{
//...
}.my_extension_function()

// or with generic parameter
{ i: Int ->
//...
}.my_extension_function()

注意:如果您在lambda上调用扩展函数但未创建变量,并且存在一个函数调用,则需要在函数调用后添加分号,例如:
someFunction();

{
//...
}.my_extension_function()

关于kotlin - Kotlin是否允许在lambda上使用扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com