可组合函数可以调用不可组合函数吗



我在Android中看到了新的Jetpack Compose,并决定去看看。我一直在努力理解一些关于可堆肥的基本概念。我的问题是:composable functions可以调用non-composable函数吗?我在谷歌上搜索过,但没有结果。

我的问题是:可组合函数能调用不可组合函数吗?

是。Kotlin中的几乎所有内容最终都是一个函数调用,并且大多数可用的函数都是不可组合的。

以下是谷歌的一个示例Compose UI代码:

@Composable
fun NewsStory() {
val image = imageResource(R.drawable.header)
Column(
modifier = Modifier.padding(16.dp)
) {
val imageModifier = Modifier
.preferredHeight(180.dp)
.fillMaxWidth()
Image(image, modifier = imageModifier,
contentScale = ContentScale.Crop)
Spacer(Modifier.preferredHeight(16.dp))
Text("A day in Shark Fin Cove")
Text("Davenport, California")
Text("December 2018")
}
}

其中,以下功能不是@Composable

  • imageResource()
  • Modifier.padding()
  • Modifier.preferredHeight()
  • Modifier.fillMaxWidth()

规则是,用@Composable标记的函数需要由另一个标记为@Composable的函数或可组合函数的一个小家族的最终消费者调用。这让人想起协程,其中suspend函数需要由其他suspend函数或suspend函数的一个小的最终消费者家族(例如,像launch()这样的协程构建器(调用。

最新更新