代码A来自project。
1:什么是Android Studio项目中的typealias
?
2:typealias
是Kotlin的关键字吗?
3:是否有与typealias OnExploreItemClicked = (ExploreModel) -> Unit
相同的等效代码?
4:为什么代码typealias OnExploreItemClicked = {(ExploreModel) -> Unit }
是错误的?
代码A
typealias OnExploreItemClicked = (ExploreModel) -> Unit
@Composable
fun CraneHome(
onExploreItemClicked: OnExploreItemClicked,
modifier: Modifier = Modifier,
) {
...
}
2条答案
按热度按时间kx5bkwkv1#
是Kotlin的typealias关键字吗?
是的。
是否存在与typealias OnExploreItemClicked =(ExploreModel)-〉Unit相同的等效代码?
不。但是,根据该语句,
OnExploreItemClicked
是(ExploreModel) -> Unit
的等效代码。换句话说,你的例子也可以写成:为什么代码typealias OnExploreItemClicked = {(ExploreModel)-〉Unit }错误?
因为
typealias
语句的右边部分需要是 type,而不是 object。你试图让OnExploreItemClicked
成为一个(语法上无效的)lambda表达式,而不是一个类型。Android Studio项目中的typealias是什么?
typealias
是类型的别名。不必在函数参数和类似的地方使用(ExploreModel) -> Unit
,您可以使用OnExploreItemClicked
。在一些情况下,别名可以更短。理想情况下,别名更能描述类型的真正含义。在本例中,OnExploreItemClicked
建议在单击“explore item”时使用该类型进行回调。您可以在this free book on Kotlin的“函数式编程”一章中阅读有关
typealias
的更多信息。xzabzqsa2#
1.Android Studio项目中的typealias是什么?
参见第2项回复。
1.是Kotlin的typealias关键字吗?
Kotlin documentation:
类型别名为现有类型提供替代名称。如果类型名称太长,您可以引入一个不同的较短名称并使用新名称。
1.是否有与typealias OnExploreItemClicked =(ExploreModel)-〉Unit相同的等效代码?
不。但在此代码中,
OnExploreItemClicked
等效于(ExploreModel) -> Unit
。因此,您可以只使用已定义的别名,而不是编写较长的(ExploreModel) -> Unit
。1.为什么代码typealias OnExploreItemClicked = {(ExploreModel)-〉Unit }错误?
因为有支架。添加它们之后,您将创建一个lambda函数,该函数不能分配给
OnExploreItemClicked
,因为它需要一个类型。总之,它只是为类型创建新名称的一种方法。示例: