【发布时间】:2019-11-03 16:22:05
【问题描述】:
我是 Scala 新手。我有一个 HashSet,当我迭代它时,我将递归函数应用于元素。如何获得第一个满意的函数返回值?
我尝试了collections.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 代码。
编辑: 例如: 我想这样写:
list.find(e=>Rec(e).isDefined).map(e=>Rec(e).get)
Rec() 是一个返回选项的函数。而且我想在find(...)中找到Rec(e)的结果,这样我就不用在map(...)中重新计算了
【问题讨论】:
-
看看
find方法。此外,一些输入和预期输出对其他人会有所帮助。 -
你也可以使用
.dropWhile:scala-lang.org/api/current/scala/collection/immutable/… -
和
.indexWhere: scala-lang.org/api/current/scala/collection/immutable/…
标签: python scala functional-programming