[英]How should a composable higher order function be referenced with Jetpack Compose?
我正在使用 Jetpack Compose 版本 0.1.0-dev13
我编写了一个简单的可组合 function ,它使用带有项目列表的AdapterList
。 (注意:当使用 lambda 而不是使用::
语法的引用时,这将按预期工作)
AdapterList(data = items, itemCallback = ::ItemCard)
作为参考, AdapterList
的签名如下:
@Composable
fun <T> AdapterList(
data: List<T>,
modifier: Modifier = Modifier,
itemCallback: @Composable (T) -> Unit
)
为了更好地促进个人预览,我将项目回调分解为单独的可组合 function。
ItemCard
function 看起来像这样:
@Composable
private fun ItemCard(item: Item) {
Card(
color = item.type.getColor()
) {
Text(
item.name,
style = MaterialTheme.typography.h5
)
}
}
据我了解, ItemCard
function 的签名为@Composable (Item) -> Unit
,它应该满足 AdapterList 的itemCallback
参数的AdapterList
。
此时 IDE 中没有显示错误。
但是,在尝试构建项目时,会显示以下错误:
类型不匹配:推断类型为 KFunction1<Item, Unit> 但 (Item) -> Unit 是预期的
这两种类型有什么区别,应该如何ItemCard
(或对它的引用)以满足类型约束?
您可以使用:
AdapterList(data = items){ ItemCard(item = it) }
或者
AdapterList(data = items, itemCallback= { ItemCard(it) } )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.