【问题标题】:What is this "provides" syntax in this kotlin jetpack compose code sample?这个 kotlin jetpack compose 代码示例中的“提供”语法是什么?
【发布时间】:2022-01-22 05:24:42
【问题描述】:

此代码示例中的“provides”语法是什么?它的作用是什么?

LocalContentAlpha provides ContentAlpha.medium

它似乎不是标准的 kotlin 关键字,而且我在谷歌上搜索“kotlin 提供关键字”或“jetpack compose 提供”之类的查询并不幸运。

这显示在Jetpack Compose codelab,下面是完整的sn-p。

@Composable
fun PhotographerCard() {
    Column {
        Text("Alfred Sisley", fontWeight = FontWeight.Bold)
        // LocalContentAlpha is defining opacity level of its children
        CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
            Text("3 minutes ago", style = MaterialTheme.typography.body2)
        }
    }
}

@Preview
@Composable
fun PhotographerCardPreview() {
    LayoutsCodelabTheme {
        PhotographerCard()
    }
}

【问题讨论】:

  • 如果您在 Android Studio 中对此类关键字或相邻单词按 CTRL+B,您将看到这些关键字的完整文档。几乎没有耐心,我想有办法找到它的作用;)

标签: android kotlin android-jetpack-compose


【解决方案1】:

这是infix function 的示例:

用中缀关键字标记的函数也可以使用中缀表示法调用(调用时省略点和括号)。

method's documentation 上存在infix 关键字可以看出。

因此方法可以正常调用为LocalContentAlpha.provides(ContentAlpha.medium),但中缀表示法允许删除那些额外的语法字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多