4
假设我想查找2D矢量中第一次出现元素的索引。indexOf for Scala中的2D矢量
val table = Vector.tabulate(10, 10)((x,y) => 10*x + y)
val row = table indexWhere (_.indexOf(42) != -1) // row = 4
val col =
if(row == -1) -1
else table(row) indexOf 42 // col = 2
由于indexOf在包含该元素的行上被调用两次,这看起来有点低效。有没有更好的方式来做到这一点,而不必诉诸于命令式的代码?
啊,对了,忘了缺失的元素。尽管如此,不管这个表中的每一个元素都是如此,不管第一场比赛被发现多快? – servechilledorhot 2013-05-07 05:10:09
@ChrisCano是的,它会经过桌子的每一个元素,所以在第一次出现时就不会停下来。 – Yuushi 2013-05-07 05:43:05
您可以将第一个条件更改为“我< - (0,直到table.length).toStream”以使其懒惰并在第一次匹配时停止。 – 2013-05-07 06:00:05