标签: anonymous-function

PHP匿名函数范围问题

我试图通过公共属性对对象数组进行排序,但是我无法将$ property参数注册到内部函数中(我可以在外部函数中使用它).

我阅读文档的方式,听起来像参数可用,我误解了什么?

这是我有的:

public static function sortObjectsByProperty($objects, $property)  
  {     
        function compare_object($a, $b) 
        {   
            $a = $a->$property;
            $b = $b->$property;

            if ($a->$property == $b->$property)
            {
                return 0;
            }      

            return ($a->$property > $b->$property) ? +1 : -1;        
        }

        usort($objects, 'compare_object');
        return $objects;
  }
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏 谢谢.

php anonymous-function usort

2
推荐指数
1
解决办法
1606
查看次数

立即触发setInterval内的匿名函数

所以我有一个看起来像这样的计时器

my_timer = setInterval(function(){
    do_something_amazing();
    do_more.stuff_here();
    var etc_etc = "foo" + bar;
}, 1000);
Run Code Online (Sandbox Code Playgroud)

我希望它立即运行,之后每秒运行一次.我尝试将appending()附加到函数的末尾,但这导致它只运行一次(因为它没有将函数本身返回到setInterval?).然后我尝试了return this;它可能会返回函数本身,但这也没有好处.这是随机猜测.

有没有办法在不创建命名函数的情况下让它工作?谢谢!

javascript anonymous-function setinterval

2
推荐指数
1
解决办法
1475
查看次数

C#4.0匿名函数

如何在C#4.0中的Javascript中显示以下内容:

var output = doSomething(variable, function() {
    // Anonymous function code
});
Run Code Online (Sandbox Code Playgroud)

我确定我以前见过这个,但我找不到任何例子.

anonymous-function c#-4.0

2
推荐指数
1
解决办法
6205
查看次数

为什么原型函数的执行上下文("this")在这个例子中是错误的?

原型函数bar在Node.js环境中bind应该在别处执行(应该可用).我希望this内部bar()函数成为我的对象的实例:

var Foo = function (arg) {
    this.arg = arg;

    Foo.prototype.bar.bind(this);
};

Foo.prototype.bar = function () {
    console.log(this); // Not my object!
    console.log(this.arg); // ... thus this is undefined
}

var foo = new Foo();
module.execute('action', foo.bar); // foo.bar is the callback 
Run Code Online (Sandbox Code Playgroud)

...为什么bar()日志undefinedthis不是我的实例?为什么bind调用不会改变执行上下文?

javascript this anonymous-function node.js

2
推荐指数
1
解决办法
102
查看次数

命名匿名函数是否安全?

随着Promises趋势上升,我们经常会看到:

getSomeData.then(
        // success
    function(data) {
        ...
    },
        // failure
    function(error) {
        ...
    }
);
Run Code Online (Sandbox Code Playgroud)

这些评论可能对新手有所帮助,但我更喜欢命名匿名函数,如下所示:

getSomeData.then(
    function success(data) {
        ...
    },
    function failure(error) {
        ...
    }
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,命名匿名函数是有道理的,但它是否安全?我在这里看过较旧的帖子,引用这篇文章作为关于IE的警告,但有人知道这是否仍然是IE9的问题?

javascript anonymous-function

2
推荐指数
1
解决办法
120
查看次数

使用varargin的匿名函数

我有一个功能,需要3个强制输入和1个可选:

 f(A, B, C, X)
Run Code Online (Sandbox Code Playgroud)

我想以这种方式使用匿名函数

h = @(X)f(A,B,C,X)
Run Code Online (Sandbox Code Playgroud)

其中A, B, C已经确定,这样我可以只是调用h(1)和代码运行f(A,B,C,1),以及h()运行f(A,B,C).我能够做到的唯一方法(如果我错了,请纠正我)正在使用varargin.我定义

f(A,B,C,varargin)
Run Code Online (Sandbox Code Playgroud)

并使用

h = @(varargin)f(A,B,C,varargin)
Run Code Online (Sandbox Code Playgroud)

问题是当我直接调用时f(A,B,C,1),然后在我的函数内部varargin = {1}.如果我打电话h(1),那么我有varargin = {{1}}.我怎么能避免这种情况?有没有更好的方法来实现我想要的?

matlab handle anonymous-function variadic-functions

2
推荐指数
1
解决办法
252
查看次数

我们可以使用返回类型与输入参数类型相同的泛型函数吗?

我们可以有一个泛型函数,其返回类型与作为第一个函数的参数的匿名函数的返回类型相同吗?

如下所示 ?

  public T Read(List<int> autIds, Func<DataSet, T> executeFn)
    {

    }
Run Code Online (Sandbox Code Playgroud)

我得到"无法解决T"的消息 - 这是可行的吗?

c# generics anonymous-function

2
推荐指数
1
解决办法
159
查看次数

以下两种代码样式之间有什么区别

代码1:

var x=(function(){
  return {
    greet:function(){
      alert('Hello from code1');
    }
  };
})();
Run Code Online (Sandbox Code Playgroud)

代码2:

var x=function(){
  return {
    greet:function(){
      alert('Hello from code2');
    }
  };
}();
Run Code Online (Sandbox Code Playgroud)

两者都将被调用为:

x.greet();
Run Code Online (Sandbox Code Playgroud)

在样式1中,我在括号内包含了自执行函数,而在第二个代码中却没有.两者都一样.那么code1和code2之间的区别是什么呢?

javascript anonymous-function

2
推荐指数
1
解决办法
68
查看次数

生成器不能处于关闭状态

我正在创建一个类,它使用生成器在调用特定方法时返回值,如:

class test {
    protected $generator;

    private function getValueGenerator() {
        yield from [1,1,2,3,5,8,13,21];
    }

    public function __construct() {
        $this->generator = $this->getValueGenerator();
    }

    public function getValue() {
        while($this->generator->valid()) {
            $latitude = $this->generator->current();
            $this->generator->next();
            return $latitude;
        }
        throw new RangeException('End of line');
    }
}

$line = new test();

try {
    for($i = 0; $i < 10; ++$i) {
        echo $line->getValue();
        echo PHP_EOL;
    }
} catch (Exception $e) {
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

当生成器被定义为类本身内的方法时,哪种方法非常有效....但我想让它更具动态性,并使用闭包作为生成器,如:

class test {
    public function __construct() {
        $this->generator = function() …
Run Code Online (Sandbox Code Playgroud)

php closures generator anonymous-function

2
推荐指数
1
解决办法
549
查看次数

匿名函数中的if-then-else

我试图在匿名函数中使用某种if-then-else语句,该函数本身是的一部分cellfun。我有一个包含多个双矩阵的单元格数组。我想用+1替换所有双精度矩阵中的所有正数,并用-1替换所有负数。我想知道我是否可以使用匿名函数而不是编写一个单独的函数,然后再从中调用它cellfun

这是玩具示例:

mat = [2, 2, 0, -2; -2, 0, 0, 2; -2, 2, -2, 2]
cellarray = repmat({mat}, 3, 1)
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的东西:

new_cellarray = cellfun(@(x) if x > 0 then x = 1 elseif x < 0 then x = -1, cellarray, 'UniformOutput', false)
Run Code Online (Sandbox Code Playgroud)

我也尝试过此操作,但是,显然不允许我在匿名函数中添加等号。

new_cellarray = cellfun(@(x) x(x > 0) = 1, cellarray, 'UniformOutput', false)
new_cellarray = cellfun(@(x) x(x < 0) = -1, cellarray, 'UniformOutput', false)
Run Code Online (Sandbox Code Playgroud)

matlab anonymous-function cell-array

2
推荐指数
1
解决办法
62
查看次数