如何在Scala中懒洋洋地映射和查找?

Mic*_*ael 1 collections scala

假设我有一个列表xs: List[X]和功能f(x:X):Yg(y):Boolean.现在我需要找到第一个y = f(x)这样的g(y) == true.

def findY(xs: List[X], f: X => Y, g: Y => Boolean): Option[Y] = ???
Run Code Online (Sandbox Code Playgroud)

我可以做到,xs.map(f).find(g)但我不想遍历整个列表xs.我也不想使用流.你会如何建议实施findY

Lui*_*hys 8

使用视图

xs.view.map(f).find(g)
Run Code Online (Sandbox Code Playgroud)