标签: anonymous-function

php在实例中设置匿名函数

我刚刚开始使用PHP,我想知道是否有一种方法可以将匿名函数添加到类实例中.

例如,让我们说......

class A{
    public B;
}

$c = new A();

//This is where I am getting a little confused...
//The following wont work

$c->B = function(){echo('HelloWorld');};
$c->B();
Run Code Online (Sandbox Code Playgroud)

我希望做的是在大量不同的应用程序中重用相同的代码,并使其能够"替换"并替换特定实例中的函数.

我使用php5.3(所以匿名函数应该工作,只是不是我使用它们的方式).

非常感谢您的时间!

-GK

php class instance anonymous-function

7
推荐指数
2
解决办法
3602
查看次数

PHP匿名函数与array_walk

我正在尝试使用带有匿名函数的array_walk,但我总是得到错误

 // Parse error: syntax error, unexpected T_FUNCTION in ... on line X
 if(!empty($myArray)) {
   array_walk($myArray, function(&$value, $key){ // Line X
     $value = '"'.$value.'"'; // Add quotes
   });
 }
Run Code Online (Sandbox Code Playgroud)

周围的文件语法是正确的.有什么想法吗?

php anonymous-function

7
推荐指数
2
解决办法
7742
查看次数

什么时候Scala需要匿名和扩展函数的参数类型?

什么时候Scala编译器真的需要匿名函数参数的类型信息?

例如,给定此功能:

def callOn[T,R](target: T, f: (T => R)) = f(target)
Run Code Online (Sandbox Code Playgroud)

然后我不能这样使用它:

callOn(4, _.toString)
  => error: missing parameter type for expanded function ((x$1) => x$1.toString)
Run Code Online (Sandbox Code Playgroud)

我必须指明

callOn(4, (_: Int).toString)
Run Code Online (Sandbox Code Playgroud)

这是相当丑陋的.为什么我的示例不起作用,而集合类上的map,filter,foldLeft等方法似乎不需要这种显式类型?

scala type-inference anonymous-function

7
推荐指数
2
解决办法
3337
查看次数

返回匿名函数

我希望有一个用PHP编写的函数,它可以创建〜5个参数的匿名函数并返回它们,这样我就可以将它们存储在一个键/值数组中,稍后调用它们,而不需要了解给定的参数,不止一次.

例如

$fun();
Run Code Online (Sandbox Code Playgroud)

之后如何实现返回和可重复使用的呼叫?

提前致谢.

php function return-value anonymous-function

7
推荐指数
1
解决办法
1万
查看次数

具有函数内函数的变量的范围?

在Python中,您可以拥有以下内容:

def foo(param1, param2):
    def bar():
        print param1 + param2
    bar()
Run Code Online (Sandbox Code Playgroud)

我在PHP中遇到这种行为有些困难.我希望这可以通过以下方式工作:

function foo($param1, $param2)
{
    function bar()
    {
        echo $param1 + $param2;
    }
    bar();
}
Run Code Online (Sandbox Code Playgroud)

但那失败了.所以我读了一些关于闭包的内容(这被称为闭包不是吗?它是在Python中,我知道).在关于匿名函数的php文档中(他们说它们已被实现为闭包),它们告诉您以下列方式使用use()表达式:

function foo($param1, $param2)
{
    function bar() use($param1, $param2)
    {
        echo $param1 + $param2;
    }
    bar();
}
Run Code Online (Sandbox Code Playgroud)

但那仍然失败.所以我把它改成了PHP-anonymous函数,就像这样:

function foo($param1, $param2)
{
    $bar = function() use($param1, $param2)
    {
        echo $param1 + $param2;
    };
    $bar();
}
Run Code Online (Sandbox Code Playgroud)

这确实有效,但它看起来真的很难看.我错过了什么吗?我可以用任何方式改进吗?或者我只需要使用'丑陋'的方式?

(我不是在寻找关于闭包是否有用的讨论)

php closures anonymous-function

7
推荐指数
1
解决办法
326
查看次数

参数列表中的类型推断与setter不起作用

让我们想象一下范围内的以下项目:

object Thing { 
  var data: Box[String] = Empty
}

def perform[T](setter: Box[T] => Unit) {
  // doesn't matter
}
Run Code Online (Sandbox Code Playgroud)

以下无法编译:

perform(Thing.data = _)
Run Code Online (Sandbox Code Playgroud)

错误消息是:

<console>:12: error: missing parameter type for expanded function ((x$1) => Thing.data = x$1)
              perform(Thing.data = _)
                                   ^
<console>:12: warning: a type was inferred to be `Any`; this may indicate a programming error.
              perform(Thing.data = _)
                                 ^
Run Code Online (Sandbox Code Playgroud)

以下编译:

perform(Thing.data_=)
Run Code Online (Sandbox Code Playgroud)

我已经通过创造更好的抽象来超越这个问题,但我的好奇心仍然存在.

谁能解释为什么会这样?

functional-programming scala type-inference anonymous-function

7
推荐指数
1
解决办法
465
查看次数

Func/Action委托使用引用参数/参数或匿名函数

我只是想知道,确切的语法是如何ref以及out委托和内联lambda函数的参数.

这是一个例子

如果函数定义为

 public void DoSomething(int withValue) { } 
Run Code Online (Sandbox Code Playgroud)

可以通过创建函数中的委托

 public void f()
 {   
     Action<int> f2 = DoSomething;
     f2(3);
 }
Run Code Online (Sandbox Code Playgroud)

如果将原始函数定义为,那该语法是怎样的

 public void DoSomething(ref int withValue) { withValue = 3; } 
Run Code Online (Sandbox Code Playgroud)

c# lambda delegates inline anonymous-function

7
推荐指数
1
解决办法
5958
查看次数

匿名功能存储的效率

假设我创建了一个像这样的对象工厂:

var newObj=function(x){
  var obj=[]
  obj.x=x
  obj.add=function(n){
    return this.x+n
  }
  return obj
}
Run Code Online (Sandbox Code Playgroud)

现在假设我创建了这个对象的数百个实例:

var obj1=newObj(1)
var obj2=newObj(2)
...
Run Code Online (Sandbox Code Playgroud)

每个obj1,obj2,...是否存储了自己的obj.add副本,还是它们都包含对存储在内存中的单个obj.add实例的引用?

谢谢!

javascript performance anonymous-function

7
推荐指数
1
解决办法
111
查看次数

报告重复事件的预期事件序列的测试助手

我有一个帮助方法,用于我的单元测试,断言特定顺序的事件是按特定顺序引发的.代码如下:

public static void ExpectEventSequence(Queue<Action<EventHandler>> subscribeActions, Action triggerAction)
{
    var expectedSequence = new Queue<int>();
    for (int i = 0; i < subscribeActions.Count; i++)
    {
        expectedSequence.Enqueue(i);
    }

    ExpectEventSequence(subscribeActions, triggerAction, expectedSequence);
}

    public static void ExpectEventSequence(Queue<Action<EventHandler>> subscribeActions, Action triggerAction, Queue<int> expectedSequence)
    {
        var fired = new Queue<int>();
        var actionsCount = subscribeActions.Count;

        for(var i =0; i< actionsCount;i++)
        {
            subscription((o, e) =>
                {
                    fired.Enqueue(i);
                });
        }

        triggerAction();

        var executionIndex = 0;

        var inOrder = true;

        foreach (var firedIndex in fired)
        {

            if (firedIndex != …
Run Code Online (Sandbox Code Playgroud)

c# events lambda unit-testing anonymous-function

7
推荐指数
1
解决办法
241
查看次数

Laravel 4 - Container类:共享函数和闭包逻辑

我对这里讨论的问题有一个后续问题: Laravel核心方法混淆

我与driechel(上面提到的问题的作者)的情况相同,目前已经习惯了Laravel 4 FW并检查了核心.虽然给出了一个精确的答案,但我仍然不了解逻辑和幕后发生的事情.所以我非常感谢进一步的解释.我知道这可能是重复的,但由于我无法发表评论,我会用一个新问题给它一个镜头.希望这样好.

从本文开始,我一直在从另一个角度看这个:http: //blog.joynag.net/2013/05/facades-in-laravel-4-and-static-methods-resolution/

在检查调用时,File:get()我最终在Container类的share函数中结束,该函数使用此实际参数调用share(function() { return new Filesystem; }.

我无法弄清楚的是使用$container.特别是在关闭时的第二次出现:

$object = $closure($container);

你能再次澄清一下吗?为什么$container在此处作为参数传递以及实际包含在其中的内容?据我所知$closure,保持并执行function() { return new Filesystem; }没有输入参数.

我搞不清楚了.现在研究这个和PHP匿名函数/闭包连续两天仍然无法弄明白.我既不理解$closure($container)这里的语法也不理解逻辑.

php closures callback anonymous-function laravel-4

6
推荐指数
1
解决办法
1953
查看次数