gpt4 book ai didi

scala - 具有默认值的函数的方法签名

转载 作者:行者123 更新时间:2023-12-05 00:46:53 25 4
gpt4 key购买 nike

在 Scala 中,有没有办法指定函数应该声明默认参数值?

比如下面的代码中,有没有办法在indirectHelloName的签名中指定提供的函数必须为第二个参数提供默认值?

def helloName(name: String, greating: String = "hello"): Unit = { 
println(s"$greating $name")
}

def indirectHelloName(name: String, function: (String,String) => Unit): Unit = {
if (name == "Ted") {
function(name, "Custom Greeting for Ted!")
} else {
function(name) //This would use the default value for the second argument.
}
}

最佳答案

您可以做的一件事是将默认值从参数列表移动到方法内部。

def helloName(in :String*) :Unit =
println(in.lift(1).getOrElse("hello") + ", " + in.head)

def indirectHelloName(name: String, function: (String*) => Unit): Unit =
if (name == "Ted") function(name, "Custom Greeting")
else function(name) //use default

用法:
indirectHelloName("Ted", helloName)  //Custom Greeting, Ted
indirectHelloName("Tam", helloName) //hello, Tam

关于scala - 具有默认值的函数的方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com