Warum gibt diese Scala-Zeile eine Einheit zurück?

7

Hier ist ein bisschen Scala-Code, um die Werte von 1 bis 9 zu summieren, die durch 3 oder 5 teilbar sind. Warum liefert Zeile 5 eine Einheit und keinen booleschen Typ?

%Vor%     
Mike 28.10.2010, 00:13
quelle

4 Antworten

11

Der if-Ausdruck hat einen Einheitentyp, weil es keine else-Klausel gibt. Daher gibt es manchmal nichts (Unit) zurück, so dass der gesamte Ausdruck den Typ Unit hat.

(Ich nehme an, du wolltest fragen, warum es Int nicht zurückgegeben hat, nicht Boolean)

    
Ben Jackson 28.10.2010, 00:15
quelle
9

Können wir jemals zu idiomatisch sein? JA KÖNNEN WIR!

%Vor%

[Bearbeiten]

Daniels Vorschlag sieht besser aus:

%Vor%     
Landei 28.10.2010 07:50
quelle
8

Hier ist meine Lösung:

%Vor%

Beachten Sie den Filter anstelle von if's.

Ein anderer in einer noch mehr idiomatischen Scala:

%Vor%     
pedrofurla 28.10.2010 00:29
quelle
4

Der am engsten funktionierende Code zu dem, was Sie getan haben, ist dies:

%Vor%     
Daniel C. Sobral 28.10.2010 11:06
quelle

Tags und Links