我已经看了scala-lang.org上的调查列表,并注意到一个奇怪的问题:" 你能说出"_"的所有用途吗? " 你能?如果是,请在此处进行.我们赞赏解释性的例子.
代码在这里:https : //github.com/fpinscala/fpinscala/blob/master/answers/src/main/scala/fpinscala/state/State.scala
def simulateMachine(inputs: List[Input]): State[Machine, (Int, Int)] = for {
_ <- sequence(inputs map ((modify[Machine] _) compose update))
s <- get
} yield (s.coins, s.candies)
Run Code Online (Sandbox Code Playgroud)
我不明白第二行在s <- get这个理解中是如何工作的。
据我所知,第一行创建了一个 State[Machine, List[Unit]] 并且 flatMap 用 _ 丢弃了 List[Unit]。
随后,在第二行中,我不明白如何get应用于Machine第一行中的创建。怎么Machine传下去?
编辑:
感谢 jwvh 和 Markus Appel 的答复,我现在知道这get是一个没有参数的方法,它返回一个State[S, S].
现在我想我明白了,但如果我错了,请纠正我。首先,我扩展了理解如下。
sequence(inputs map ((modify[Machine] _) compose update))
.flatMap(_ => get
.map(s => (s.coins, s.candies))
Run Code Online (Sandbox Code Playgroud)
get.map(s => (s.coins, s.candies)可以用 …
scala ×2