Я новичок в Скале. У меня есть HashSet, когда я перебираю его, я применяю рекурсивную функцию к элементу. Как я могу получить первое удовлетворенное возвращаемое значение функции?
Я пробовал collection.find (...). Map (...), но не могу извлечь возвращаемое значение внутри функции в find (), иЯ не хочу, чтобы map снова запускала эти рекурсивные функции.
def Rec(myObject, acc: list):
if myObject.size == 1:
return acc
elif len(myObject.myList) == 0:
return None
else:
for e in myObject.myList:
#func is another function that create a new object whose size is smaller and changes myList attribute
newObject = func(myObject, e)
acc.append(e)
res = Rec(newObject, acc)
if res:
return res
return None
Итак, мой вопрос заключается в том, как преобразовать приведенный выше код Python в идиоматический код Scala.
РЕДАКТИРОВАТЬ: Например: Iхочу написать так:
list.find(e=>Rec(e).isDefined).map(e=>Rec(e).get)
Rec () - это функция, которая возвращает опцию. И я хочу извлечь результат Rec (e) из find (...), когда он находит, поэтому мне не нужно пересчитывать его на карте (...)