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