Set default-Wert für die Funktion parameter im scala
Ich bin versucht, einen default-Wert eine anonyme Funktion in scala, und damit nicht in der Lage zu finden keine Lösung. Hoffe jemand würde mir helfen in SO.
Habe ich die folgende Struktur,
case class A(id:Int = 0)
case class B(a:A)
object B {
def func1(f:Int = 0)={
........
}
def func2(f:A => B = (how to give default value ?))={
case Nothing => {
//do something....
}
case _ => {
//do some other thing......
}
}
}
Im Grunde, möchte ich die übergabe der parameter als optional. Wie kann ich das erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie jede andere Standard-parameter:
oder mit String:
Edit:
Im Falle dass, wenn Sie wollen, um eine Funktion zu verwenden, sofern Sie standardmäßig verwenden
()
ausdrücklich, entweder die Scala wird nicht fügen Sie ein Standard-argument.Wenn Sie nicht wollen, verwenden Sie eine Standard-Funktion und bieten eine explizite Regel, nur geben Sie es selbst:
test(_*33)(1)
Verwenden Sie eine implizite parameter. Legen Sie eine implizite Wert für den parameter in das Objekt. Dies wird verwendet werden, es sei denn, Sie stellen einen expliziten parameter, oder Sie haben eine andere implizite Wert in der aufrufenden Bereichs.
Die Unterschiede zwischen dieser Methode und Alexlv Methode sind
Ich biete diese Lösung, da Sie bereits ein Objekt. Ansonsten Alexvlv Beispiel ist einfacher.
func2(10)
(der zweite Zweig mit match alle_
) wirft einen Fehler verursachenfunc2
erwarten, dass eine implizite param und Sie gab es eine int. Ich kann Ihnen Tonnen von Beispielen aus der Produktion, wenn implicits (mit einem design, das nahe zu Ihr) sind eine Katastrophe und bricht viel.Die anderen Antworten zeigen, wie einige der bestehenden default-Wert, aber wenn Sie möchten, dass der Standard nichts zu tun (wie vorgeschlagen von
case Nothing
), dann können Sie verwenden Sie die Option/None.