Ich versuche scala zu lernen und bisher war es großartig. Ich habe Schwierigkeiten herauszufinden, wie man diesen Fehler beheben kann, und ich habe versucht, mich über Foreach und Return-Anweisungen in ihnen zu erziehen, aber ich kann das Problem immer noch nicht verstehen, also poste ich hier mein Problem:foreach in Methode, um Wert zurückzugeben
def a: Int = {
for(i <- Array(1,2,3,4,5)){
if(i == 3)
return i
}
}
Das obige Verfahren wird nicht kompiliert, erhalte ich folgende Fehlermeldung:
error: type mismatch;
found : Unit
required: Int
for(i <- Array(1,2,3,4,5)){
^
ich verstehe, was eine Art ist, aber ich kann nicht herausfinden, wie diese zu beheben. Wie würde ich I int zuweisen? Das erwartete Verhalten ist, dass die Methode 3 zurückgibt. Würde dies passieren und was ist falsch an meinem Code?
'return' wird normalerweise nicht in Scala verwendet, und veränderliche Datenstrukturen wie' Array' werden normalerweise vermieden. Das idiomatische Äquivalent Ihrer Methode (einschließlich der Vorgabe aus drexins Antwort) wäre etwas wie 'def a = 1 bis 5 find (_ == 3) getOrElse 0' (oder alternativ' val a = 3' :)) –