2016-04-02 5 views
0

Ich habe eine Funktion, wie untenWie kann der Vorgängerwert beim Aufruf der Methode mit Standardargumenten weggelassen werden?

def add(a: Int = 10, b: Int = 15): Int = { 
    var sum: Int = 0 
    sum = a + b 
    return sum 
} 

Wenn I add(5, 5) Call, ausgegeben 10. Wenn I add() Call, 25 ausgegeben, als Standardwerte verwendet werden. Wenn ich rufe add(8), d. H. Einen einzelnen Wert, a ist 8 zugeordnet, so ist insgesamt 23.

Jetzt möchte ich den Standardwert zuweisen und nur Pass b.

Ich versuchte add(, 6), aber es gibt einen Fehler.

+1

Verwendung benannter Parameter: 'hinzufügen (b = 6)'. Beachten Sie, dass in Ihrer Definition ein '=' Zeichen fehlt. – Jubobs

+2

Verwenden Sie nicht 'var'. Warum benutzt du es? Warum nicht einfach 'def add schreiben (a: Int = 10, b: Int = 15) = a + b'? Jedes Mal, wenn Sie denken, dass Sie 'var' verwenden möchten, fragen Sie sich:" _why_ glaube ich, ich möchte es benutzen? " – Dima

+1

Obwohl die Verwendung 'benannter Parameter' funktioniert, würde ich fragen, warum Sie in diesem Fall Standardparameter verwenden. Ich finde 'add (10, 6)' besser lesbar als 'add (b = 6)'. Ich gebe zu, dass ich in diesem Fall generell für explizite über implizite, d. H. Standardwert bin. –

Antwort

2

Da Scala Parameter namens unterstützt, können Sie tun:

add(b = 6) // 16