【发布时间】:2014-03-04 14:17:52
【问题描述】:
当方法返回一个函数时,可以这样调用:
class AClass {
public function getFnc() {
$f = function() {
echo "hello from a function";
};
return $f;
}
}
在调用方我们可以这样做:
$c = new AClass();
$f = $c->getFnc();
$f();
如预期的那样,输出为hello from a function。
内联调用无法编译:
$c->getFnc()();
这怎么可能用一些转换写成内联(ish)?我正在从调用者的角度寻找一种优雅的方式。
在数学中,东西是在原地评估的:
(3 + 2)(5 + 1)
(5)(6)
30
而不是引入不必要的变量f1:
f1 = (3 + 2)
f1(5 + 1)
...
【问题讨论】:
-
你能解释一下你的实际目标是什么,因为现在这似乎无缘无故地增加了额外的复杂性。你这样做的目的是什么?
-
返回
$f()而不是返回 $f -
@Nouphal.M: Return f() 将评估 f 并返回结果。这将“内联”被调用方的函数,并在示例中返回一个字符串。
-
@FDL:我希望将 FUNctions 作为返回值并对其进行评估:-)
-
我们已经在 90 年代的 perl 中做到了这一点
$f->foo()->()
标签: php functional-programming inline