对于此示例,没有区别,因为您是按顺序添加参数的 add(a=2,b=3):这里a将取2,b将取3 add(2,3):这里a是第一个参数,所以它将接受第一个传递的参数,即2,对于b也是如此 但是这里有一个区别(a + b == b + a所以我加上一个减函数来看看区别,因为a - b!= b - a):
fun minus(a : Int,b:Int):Int{
return a-b;
}
fun main()
{
print(minus(a=2,b=3)) // a = 2, b = 3 -> a - b = 2 - 3 = -1
print(minus(b=2,a=3)) // a = 3, b = 2 -> a - b = 3 - 2 = 1
print(minus(2,3)) // a = 2, b = 3 -> a - b = 2 - 3 = -1
}
3条答案
按热度按时间6jjcrrmo1#
在第一种情况下,你要明确地指定要将值赋给add()方法构造函数的哪个字段。这样,只要每个值都明确地赋给了一个参数,你就可以不考虑赋值的顺序。例如,在这种情况下,你也可以写:
仍然有效。
相反,在第二种方法中,您必须遵循在方法实现中写入字段的顺序(第一个值隐式分配给a,第二个值分配给B,依此类推)
m4pnthwp2#
对于此示例,没有区别,因为您是按顺序添加参数的
add(a=2,b=3)
:这里a
将取2,b
将取3add(2,3)
:这里a
是第一个参数,所以它将接受第一个传递的参数,即2,对于b
也是如此但是这里有一个区别(a + b == b + a所以我加上一个减函数来看看区别,因为a - b!= b - a):
所以如果你把
minus(a=2,b=3)
加起来,你就等于a
取2,b
取3,这里
minus(2,3)
表示第一个参数(a
)取2,第二个参数(b
)取3但是,假设由于某种原因,您更改了函数参数的顺序:
现在,如果添加
minus(a=2,b=3)
,则a
将取2,而b
将取3,因此对于这种情况没有任何变化,您的代码将正常工作。但是在这里
minus(2,3)
你说的是第一个参数(b
)要取2,第二个参数(a
)要取3,所以在改变函数的参数顺序之前你不会得到相同的结果。所以当你调用函数时,添加参数名称是一个最好的做法,告诉你想要这个参数的值。还有一个例子,假设你有一个函数,它有默认值:
趣味测验(a:Int = 10,B:Int = 5):Int {返回a+b;}
所以你可以像
test()
那样调用它,不需要传递任何参数,但是假设你只想把b改为15,如果你写test(15)
,a
会取15而不是b
,所以这里你需要指定15是b
的:test(b = 15)
bmp9r5qi3#
没有区别,唯一的区别是在第一个示例中使用命名参数时的可读性。
在调用方法时使用命名参数的有趣之处在于,您还可以更改顺序,甚至可以省略某些默认值,例如:
也可以像这样用默认值编写:
现在您可以跳过一些值,如下所示: