sam*_*dy1 5 android higher-order-functions kotlin android-jetpack-compose
我正在使用 Jetpack Compose 版本 0.1.0-dev13
我编写了一个简单的可组合函数,它使用一个AdapterList项目列表。(注意:当使用 lambda 而不是使用::语法的引用时,这将按预期工作)
AdapterList(data = items, itemCallback = ::ItemCard)
Run Code Online (Sandbox Code Playgroud)
作为参考,签名AdapterList如下:
@Composable
fun <T> AdapterList(
data: List<T>,
modifier: Modifier = Modifier,
itemCallback: @Composable (T) -> Unit
)
Run Code Online (Sandbox Code Playgroud)
为了更好地促进单独预览,我将项目回调分解为一个单独的可组合函数。
该ItemCard函数如下所示:
@Composable
private fun ItemCard(item: Item) {
Card(
color = item.type.getColor()
) {
Text(
item.name,
style = MaterialTheme.typography.h5
)
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,该ItemCard函数的签名应满足 的参数@Composable (Item) -> Unit类型。itemCallbackAdapterList
此时 IDE 中没有显示任何错误。
但是,当尝试构建项目时,会显示以下错误:
类型不匹配:推断类型为 KFunction1<Item, Unit> 但预期为 (Item) -> Unit
这两种类型之间有什么区别?应该如何ItemCard更改(或对它的引用)以满足类型约束?
OK,初步分析是:是一个bug。
(注:前段中的链接需要 Kotlinlang Slack 访问权限)
我为此提交了一个问题(随后被标记为该问题的副本)。因此,与此同时,您仍受困于 lambda 表达式。但是,请密切关注该问题,因为我们可能会在那里找到解决方法。
| 归档时间: |
|
| 查看次数: |
4031 次 |
| 最近记录: |