5
是否可以在Scala中定義一個值(在if中)以便在收益中使用Scala中的值。你能否在Scala中定義一個值(在if中)以便在收益中使用
我想這樣做是爲了避免兩次潛在的昂貴評估。
舉例說明。
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
是否可以在Scala中定義一個值(在if中)以便在收益中使用Scala中的值。你能否在Scala中定義一個值(在if中)以便在收益中使用
我想這樣做是爲了避免兩次潛在的昂貴評估。
舉例說明。
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
如何:
for {
bar <- bars
exp = expensive(bar)
if exp > 5
} yield (bar, exp)
是的,你可以:
scala> List(1,2,3,4,5)
res0: List[Int] = List(1, 2, 3, 4, 5)
scala> for(n <- res0; val b = n % 2; if b==1) yield b
res2: List[Int] = List(1, 1, 1)
這隻能如果'貴(巴)'型尊重,理解的接口(地圖,flatMap,過濾器,過濾器等)。這個問題的作者沒有提出它的確如此。如果確實如此,它將返回與作者提供的代碼不同的結果。 – pedrofurla
@pedrofurla好的。昂貴()可能不會返回集合。所以將「< - 」改爲「=」 – Don
嗯...不知道你可以忽略'val'那裏。尼斯。儘管如此,'<-'和'='具有完全不同的含義,即使它返回一個集合。順便說一句,收集是沒有必要的,只有'可以說是單子'的界面。 – pedrofurla