gpt4 book ai didi

android - Jetpack Compose 应该如何引用可组合的高阶函数?

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

我正在使用 Jetpack Compose 版本 0.1.0-dev13

我编写了一个简单的可组合函数,它使用 AdapterList 带有项目列表。 (注意:当使用 lambda 而不是使用 :: 语法的引用时,这将按预期工作)

AdapterList(data = items, itemCallback = ::ItemCard)

供引用, AdapterList 的签名如下:
@Composable
fun <T> AdapterList(
data: List<T>,
modifier: Modifier = Modifier,
itemCallback: @Composable (T) -> Unit
)

为了更好地促进个人预览,我将项目回调分解为一个单独的可组合函数。
ItemCard函数如下所示:
@Composable
private fun ItemCard(item: Item) {
Card(
color = item.type.getColor()
) {
Text(
item.name,
style = MaterialTheme.typography.h5
)
}
}

据我了解, ItemCard函数的签名为 @Composable (Item) -> Unit应该满足 itemCallback 的类型 AdapterList的参数.

此时 IDE 中没有显示错误。

但是,在尝试构建项目时,会显示以下错误:

Type mismatch: inferred type is KFunction1<Item, Unit> but (Item) -> Unit was expected


ItemCard这两种类型有什么区别? (或对它的引用)被更改以满足类型约束?

最佳答案

好的,the preliminary analysis是:这是一个错误。

(注意:上一段中的链接需要 Kotlinlang Slack 访问权限)

我提交了an issue为此(随后被标记为 this issue 的副本)。因此,与此同时,您会被 lambda 表达式所困扰。但是,请密切关注该问题,因为我们可能会在那里找到解决方法。

关于android - Jetpack Compose 应该如何引用可组合的高阶函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62362663/

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