У меня есть код Java, который я хочу, чтобы преобразовать в Scala один:Возвращение из «за» в Scala не то же самое, как возвращение из «за» в Java
MyClass myMethod(String str1) {
for (Item item: items) {
if (/* some condition */) {
if(/* another condition */) {
return item.myMethod123();
}
}
}
return super.myMethod(str1);
}
Если я использую for
в Scala, он будет переведен на map
, то есть на вызов return
в пределах map
будет просто возвращено значение от map
, но оно не остановится myMethod
исполнение. Но я хочу, чтобы он вел себя точно так же, как в этом коде Java.
Как это решить?
UPDATE: Я имею в виду, я должен использовать foreach
вместо for
. Однако вызов return
от foreach
только что возвращает значение от foreach
и не останавливается myMethod
исполнение.
UPDATE2: Я смущен, foreach
не возвращает никакой ценности.
Можете ли вы показать свой пробный код scala? – fge
foreach не похож на java выражение, его функцию на коллекции, которая будет просто вызывать функцию для каждого элемента внутри вашей карты, todo, как java, вам также нужно использовать выражение for, например @ rex-kerr, объясняющее –
'элементов. find (item =>/* некоторое условие */&&/* другое условие * /). fold (super.myMethod (str1)) (_. myMethod123()) ' –