访问匿名函数

时间:2013-10-14 02:37:26

标签: scala

假设我有一个类型:

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)值?

1 个答案:

答案 0 :(得分:0)

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

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

(我可能会错误地记住scalaz state monad上run方法的名称。)

<强>更新

实际上,我认为它只是apply,所以foo()(initObj)会起作用(虽然我可能会删除foo定义中不需要的括号,减少最终调用只是foo(initObj))。