假设我有一个类型:
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)
值?
答案 0 :(得分:0)
为了获得(x, y)
的具体值和最终状态Obj
,您需要将初始值Obj
传递给您的函数。类似的东西:
val (coords, finalObj) = foo().run(initObj)
(我可能会错误地记住scalaz state monad上run
方法的名称。)
<强>更新强>
实际上,我认为它只是apply
,所以foo()(initObj)
会起作用(虽然我可能会删除foo
定义中不需要的括号,减少最终调用只是foo(initObj)
)。