"modifier" 和 "Modifier" 有什么区别(Kotlin Android,Jetpack Compose)
What's difference "modifier" and "Modifier" (Kotlin 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))
}
}
}
[第3行]首先是为什么要用'modifier: Modifier = Modifier'?它到底有什么作用?
[第 5 行] 第二个是“m”修饰符和“M”修饰符有什么区别?将 Modifier 更改为修饰符时,不会发生代码错误(红色下划线)。结果不是我想要的。
你懂的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
) { ... }
代码参考: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))
}
}
}
[第3行]首先是为什么要用'modifier: Modifier = Modifier'?它到底有什么作用?
[第 5 行] 第二个是“m”修饰符和“M”修饰符有什么区别?将 Modifier 更改为修饰符时,不会发生代码错误(红色下划线)。结果不是我想要的。
你懂的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
) { ... }