Sue*_*e97 2 android android-jetpack android-jetpack-compose
代码参考:https://www.youtube.com/watch?v =Kw4_i4l5y4s&ab_channel=PhilippLackner
我对此代码有两个问题
@Composable
fun ProfileSection(
modifier: Modifier = Modifier
) {
Column(modifier = Modifier.fillMaxWidth()) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp)
){
RoundImage(
image = painterResource(id = R.drawable.messi1),
modifier = Modifier
.size(100.dp)
.weight(3f)
)
Spacer(modifier = Modifier.width(16.dp))
StatSection(modifier = Modifier.weight(7f))
}
}
}
Run Code Online (Sandbox Code Playgroud)
[第3行]首先是为什么使用'modifier: Modifier = Modifier'?它究竟有何作用?
[第5行]第二个是“m”修饰符和“M”修饰符有什么区别?当将修饰符更改为修饰符时,不会出现代码错误(红色下划线)。结果不是我想要的。
你明白int: Int = 0?与此相同。第一个int是我们的名字(可以是我们想要的任何内容)。冒号之后的第二个Int是我们的类型,我们希望int保存的数据类型。第三个是值,在本例中为0 。
Modifier是参数的名称,Modifier是类型,Modifier是值。现在您可能会对Modifier本身是Modifier类型的对象这一事实感到困惑,但不要对此感到压力。它是一个伴生对象,因此您既可以将其用作对象类型,也可以将其用作对象本身。
另外,正如您所看到的,Kotlin 可以根据提供的值推断类型,您甚至可以在此处跳过类型。例如,在 中var int: Int = 0,Int是多余的。Kotlin 会知道该类型是Int因为我们已经分配了该类型的值(0,是 Integer)。因此,我们可以将其写为:var int = 0。
但是,参数的情况并非如此,也就是说,如果所关注的实体是函数的参数,即使分配了值,您仍然必须指定类型。
因此,在你的例子中,
fun ProfileSection(
modifier: Modifier = Modifier
) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1196 次 |
| 最近记录: |