0

假设我有一个类型:

type State[S, +A] = S => (A,S)

和一个功能:

def foo(): State[Obj, (x, y)]

如果我调用这个函数:

val result = foo() // result is an anonymous function: Obj => ((x, y), Obj)

如何访问Obj(x, y)值?

4

1 回答 1

0

为了获得(x, y)的具体值和最终状态Obj,您需要将 的初始值传递Obj给您的函数。就像是:

val (coords, finalObj) = foo().run(initObj)

(我可能记错了runscalaz state monad上的方法名称)。

更新

实际上,我认为它是 just apply,所以foo()(initObj)会起作用(尽管我可能会去掉定义中不需要的括号foo,将最终调用减少到 just foo(initObj))。

于 2013-10-14T02:51:29.090 回答