我可以将可组合函数存储在变量中吗?

Ely*_*lye 7 android android-jetpack-compose

在 Kotlin 中,函数是一等公民。我们可以将一个函数存储在一个变量中,如下所示

val functionVariable: () -> Unit = ::myFunction

fun myFunction() { }
Run Code Online (Sandbox Code Playgroud)

但是,对于@Composable功能,我该怎么做?

如果我做了下面的事情,它会犯规,即 org.jetbrains.kotlin.diagnostics.SimpleDiagnostic@e93b05f8 (error: could not render message)

val functionVariable: () -> Unit = ::myFunction

@Composable
fun myFunction() { }
Run Code Online (Sandbox Code Playgroud)

有没有办法将可组合函数存储为变量?

H.D*_*.D. 6

尚不支持可组合函数引用(这就是错误消息的实际含义)。此外,@Composable注解是函数签名的一部分,因为它为函数添加了一些参数。所以你需要使用val functionVariable: @Composable () -> Unit = { myFunction() }.