标签: anonymous-function

如何将javascript变量设置为内联函数的返回值?

我正在使用代码:

var x = function() {return true;};
Run Code Online (Sandbox Code Playgroud)

试图将x设置为true,该函数的返回值,而是x被定义为函数本身.如何将x设置为函数的返回值?我可以通过使用非内联函数或其他类似的东西轻松编码这个问题,但它让我感到困惑,因为我确信必须有一个简单的解决方案.

谢谢.

javascript anonymous-function

11
推荐指数
2
解决办法
2万
查看次数

scala闭包/匿名函数中的多个返回点

据我所知,Scala中没有办法在匿名函数中有多个返回点,即

someList.map((i) => {
    if (i%2 == 0) return i // the early return allows me to avoid the else clause
    doMoreStuffAndReturnSomething(i) // thing of this being a few more ifs and returns
})
Run Code Online (Sandbox Code Playgroud)

提出一个error: return outside method definition.(如果没有提出这个问题,那么代码将不起作用,因为我希望它可以工作.)

我可以做的一个解决方法是以下

someList.map({
    def f(i: Int):Int = {
        if (i%2 == 0) return i
        doMoreStuffAndReturnSomething(i)
    }
    f
})
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否还有另一种"接受"的做法.也许有可能没有内部功能的名称?

(一个用例是continue在循环中模拟一些有价值的构造.)

编辑

请相信我,有必要避免使用else语句,因为该doMoreStuff部分可能看起来像:

val j = someCalculation(i)
if (j == 0) return 8
val k = needForRecalculation(i) …
Run Code Online (Sandbox Code Playgroud)

closures scala return-value anonymous-function

11
推荐指数
2
解决办法
3652
查看次数

是否允许使用匿名函数?

Eclipse和NetBeans都会抛出有关使用匿名函数的错误.NetBeans中的错误说The language feature not compatible with PHP version indicated in project settings

代码可以工作,但IDE似乎不喜欢它.

我应该担心吗?

php eclipse netbeans anonymous-function

11
推荐指数
2
解决办法
1286
查看次数

JavaScript - 从匿名函数返回(varScope)

<script>
    var sample = function() {
        (function() {
            return "something"
        })();
        // how can I return it here again?
    }
</script>
Run Code Online (Sandbox Code Playgroud)

有没有办法再次从父函数中的匿名函数返回返回值,还是需要使用已定义的函数来获取返回值?谢谢!:)

javascript scope anonymous-function

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

Matlab函数处理工作区shenanigans

简而言之:是否有一种优雅的方式来限制匿名函数的范围,或者在这个例子中是否有Matlab破坏?

我有一个函数创建一个在管网解算器中使用的函数句柄.它接受一个网络状态作为输入,其中包括有关管道及其连接的信息(如果必须,还包括边和顶点),构造一个大字符串,在函数形式时将返回一个大矩阵,并"evals"该字符串以创建句柄.

function [Jv,...] = getPipeEquations(Network)
... %// some stuff happens here

Jv_str = ['[listConnected(~endNodes,:)',...
    ' .* areaPipes(~endNodes,:);\n',...
    anotherLongString,']'];

Jv_str = sprintf(Jv_str); %// This makes debugging the string easier

eval(['Jv = @(v,f,rho)', Jv_str, ';']);
Run Code Online (Sandbox Code Playgroud)

这个函数按预期工作,但每当我需要保存包含此函数句柄的后续数据结构时,它需要一个可笑的内存量(150MB) - 巧合的是在创建此函数时整个Matlab工作区(~~) 150MB).这个函数处理的变量需要来自getPipeEquations工作区并不是特别大,但是当我检查函数句柄时,更疯狂的是:

>> f = functions(Network.jacobianFun)
f = 

     function: [1x8323 char]
         type: 'anonymous'
         file: '...\pkg\+adv\+pipe\getPipeEquations.m'
    workspace: {2x1 cell}
Run Code Online (Sandbox Code Playgroud)

...工作区字段包含getPipeEquations具有的所有内容(顺便说一句,它不是整个Matlab工作区).

如果我改为将eval语句移动到子函数以试图强制范围,则句柄将更加紧凑(~1MB):

function Jv = getJacobianHandle(Jv_str,listConnected,areaPipes,endNodes,D,L,g,dz)
eval(['Jv = @(v,f,rho)', Jv_str, ';']);
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?是否有更优雅的方式来限制此匿名函数的范围?

作为附录,当我多次运行包含此函数的模拟时,清除工作空间变得非常缓慢,这可能与Matlab处理函数及其工作空间有关,也可能与之无关.

matlab closures scope eval anonymous-function

11
推荐指数
1
解决办法
1595
查看次数

哪个版本的php添加了匿名函数

在手册中有create_function函数,你可以将该函数的结果传递给array_map,我认为这是拥有像匿名函数和闭包这样的东西的唯一方法,但后来我发现我可以把函数放在javascript中

array_map(function($a) {
    return $a + 1;
}, array(1, 2, 3, 4, 5));
Run Code Online (Sandbox Code Playgroud)

在哪个版本的PHP我可以做到这一点?这总是在那里吗?

php anonymous-function

11
推荐指数
2
解决办法
3768
查看次数

在clojure中,如何使用匿名函数文字来编写身份函数?

如何使用匿名函数文字(#())在clojure中编写身份函数?

以下代码不起作用:

(#(%) 5)
Run Code Online (Sandbox Code Playgroud)

它引发了一个异常,因为它被转换为:

((fn[x] (x)) 5)
Run Code Online (Sandbox Code Playgroud)

问题在于,当使用#()时,函数体用括号括起来.任何想法,如何优雅地克服这个?

clojure anonymous-function

11
推荐指数
1
解决办法
1524
查看次数

在匿名函数中使用变量,该函数在其他地方定义

在PHP中使用匿名函数时,可以使用use()关键字轻松地使用其范围之外的变量.

在我的例子中,匿名函数已经在某处定义,但稍后在(在其他地方)类中调用.

以下代码是为了说明这个想法:

<?php

$bla = function ( $var1 ) use ($arg)
        {
            echo $var1;
        };

class MyClass
{
    private $func;

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

    public function test ( $arg )
    {
        $closure =  $this->func;
        $closure ( 'anon func' );
    }
}

$c = new MyClass($bla);
$c->test ( 'anon func' );
Run Code Online (Sandbox Code Playgroud)

我正在做的是我创建一个anonymous function并存储在变量中.我将该变量传递给类的方法,这是我想要运行匿名函数的地方.

但我不能使用use()关键字$argmethod这种方式获取参数.因为匿名函数是在...之外声明的method.

但我真的需要一种方法来从运行匿名函数的方法中获取变量.当匿名函数在其他地方声明时,有没有办法做到这一点?

php closures anonymous-function

11
推荐指数
1
解决办法
9161
查看次数

PHP 7.2 - 如何在字符串中包含函数体时动态创建匿名函数

当我在字符串中有函数体时,如何动态创建匿名函数.

例如

$user = "John Doe";
$body = "echo 'Hello' . $user;";

$myFunct = function($user) {$body}; // How do I have function body here from string.

$myFunct($user);
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

PS我正在寻找替代create_function()功能,这在PHP的早期版本中是有的.就像在create_function()中我们可以将函数体作为字符串传递一样,我想在字符串变量中定义匿名函数的主体.

php anonymous-function php-7.2

11
推荐指数
1
解决办法
683
查看次数

命名和未命名匿名Javascript函数之间的差异

通常,在Javascript中,当我想将匿名/内联函数作为参数传递给另一个函数时,请执行以下操作之一。

someFunctionCall(function() {
    //...
});

someFunctionCall( () => {
    //...
});
Run Code Online (Sandbox Code Playgroud)

但是,我最近继承了一个使用命名函数作为内联参数的代码库,如下所示

someFunctionCall(function foo() {
    //...
});
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这种语法。该函数似乎仍然是匿名的- foo在调用范围或被调用范围中都没有定义函数。这仅仅是样式问题,还是可以使用命名函数(foo上述)作为匿名函数来更改该程序的行为或状态?

这是专门针对NodeJS(不是基于浏览器的程序)程序的,并且我对使用函数作为参数的特定行为特别感兴趣。也就是说,欢迎跨平台和运行时提供来自行为的信息。

javascript closures anonymous-function node.js function-expression

11
推荐指数
1
解决办法
187
查看次数