Scala 命名参数
在Scala中,当参数通过带有命名参数的函数时,我们可以用它们的参数名称来标记参数。这些命名参数与函数的命名参数交叉匹配。在通常情况下,无名参数使用参数位置来进行函数或构造器的调用,但这些有名参数允许我们通过简单的交换顺序来改变参数传递到函数中的顺序。
语法
Function Definition : def createArray(length:int, capacity:int);
Function calling : createArray(capacity=20, length:10);
预防措施 —
-- 如果一些参数被命名,而其他参数没有被命名,那么未命名的参数必须排在前面
function(0, b = “1”)
**-- > 顺序互换是有效的 **
function(b = “1”, a = 0)
**- > 不接受 , 错误:命名参数后的位置 **
function(b = “1”, 0)
**- > 不接受,参数’a’在第一个位置被指定为’0’,并再次被指定为a = 1 **
function(0, a = 1)
注意: 如果x参数表达式的形式是 x = expr ,并且x不是方法的参数名,那么该参数将被视为对某个变量x的赋值表达式。
例子:
// Scala program using Named arguments
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
// passed with named arguments
printIntiger(X = 6, Y = 8);
}
// Defining a method
def printIntiger( X:Int, Y:Int ) =
{
println("Value of X : " + X );
println("Value of Y : " + Y );
}
}
输出。
Value of X : 6
Value of Y : 8
在上面的例子中,我们创建了printIntiger函数,然后调用了该函数。在调用函数时,我们使用了函数的参数名称。我们传递了参数X=6,Y=8,这里 X 和 Y 是参数的名称。
例子:
// Scala program using Named arguments
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
// without named arguments
printName("geeks","for","geeks");
// passed arguments according to order
printName(first = "Geeks", middle="for",
last = "Geeks");
// passed arguments with different order
printName(last = "Geeks", first = "Geeks",
middle="for");
}
// Defining function
def printName( first: String, middle: String,
last: String ) =
{
println("Ist part of name: " + first )
println("IInd part of name: " + middle )
println("IIIrd part of name: " + last )
}
}
输出。
Ist part of name: geeks
IInd part of name: for
IIIrd part of name: geeks
Ist part of name: Geeks
IInd part of name: for
IIIrd part of name: Geeks
Ist part of name: Geeks
IInd part of name: for
IIIrd part of name: Geeks
正如我们在上面的例子中所看到的,我们创建了printName函数,然后我们调用了该函数。这里,我们在调用函数时使用了函数的参数名。通过改变参数的顺序,如printName(last = “Geeks”, first = “Geeks”, middle=”for”),我们可以得到同样的结果。
极客教程