闭 包

您可以在Zephir中使用闭包(也称为匿名函数);这些是PHP兼容的,可以返回给PHP代码块:

  1. namespace MyLibrary;
  2. class Functional
  3. {
  4. public function map(array! data)
  5. {
  6. return function(number) {
  7. return number * number;
  8. };
  9. }
  10. }

它也可以直接在Zephir中执行,并作为参数传递给其他函数/方法:

  1. namespace MyLibrary;
  2. class Functional
  3. {
  4. public function map(array! data)
  5. {
  6. return data->map(function(number) {
  7. return number * number;
  8. });
  9. }
  10. }

一个简短的语法也可以用来定义闭包:

  1. namespace MyLibrary;
  2. class Functional
  3. {
  4. public function map(array! data)
  5. {
  6. return data->map(number => number * number);
  7. }
  8. }