标签: anonymous-function

是否存在用于在Scala中的匿名函数内绑定值的语法糖?

而不是写作

((x: Double) => (((y: Double) => y*y))(x+x))(3)
Run Code Online (Sandbox Code Playgroud)

我想写点类似的东西

((x: Double) => let y=x+x in y*y)(3)
Run Code Online (Sandbox Code Playgroud)

在Scala中有类似的这种语法糖吗?

scala anonymous-function syntactic-sugar

6
推荐指数
2
解决办法
401
查看次数

如何在Scala中对Python或运算符进行近似设置比较?

在听到最新的Stack Overflow播客后,Peter Norvig的紧凑型Python拼写检查器引起了我的兴趣,所以我决定在Scala中实现它,如果我能用功能Scala成语表达它,还要看看需要多少行代码.

这是整个问题.(我们还不比较代码行.)

(两个注意事项:如果你愿意,你可以在Scala解释器中运行它.如果你需要big.txt或整个项目的副本,它就在GitHub上.)

import scala.io.Source

val alphabet = "abcdefghijklmnopqrstuvwxyz"

def train(text:String) = {
  "[a-z]+".r.findAllIn(text).foldLeft(Map[String, Int]() withDefaultValue 1)
    {(a, b) => a(b) = a(b) + 1}
}

val NWORDS = train(Source.fromFile("big.txt").getLines.mkString.toLowerCase)

def known(words:Set[String]) =
  {Set.empty ++ (for(w <- words if NWORDS contains w) yield w)}

def edits1(word:String) = {
  Set.empty ++
  (for (i <- 0 until word.length) // Deletes
    yield (word take i) + (word drop (i + 1))) ++ 
  (for (i <- 0 until word.length - …
Run Code Online (Sandbox Code Playgroud)

python scala anonymous-function

6
推荐指数
2
解决办法
542
查看次数

JavaScript:将匿名函数赋值给变量时,不传递函数返回值,而是将函数作为字符串传递

我正在尝试学习JavaScript,但我遇到了一个障碍.如果答案很明显并且可以通过简单的搜索获得,我会事先道歉.我是编程和JavaScript的新手,不确定要遵循什么样的查询.

在下面的代码中,该函数从HTML表单中获取值,进行一些处理并将其发回.我测试了输入和输出过程,它正常工作.

function foo() {

var x = parseInt(document.formdata.fieldone.value);
var y = parseFloat(document.formdata.fieldtwo.value);

if (isNaN(y))
    { var z = x; }
else
    { var z = function(x, y) {
            if ((y * (x / 100)) < 1) {
                return (x + Math.ceil(y * (x / 100))); }
            else if ((y * (x / 100)) > 1) {
                return (x + Math.round(y * (x / 100))); }
            else {
                return 0; } } }

var bar = document.getElementById("output");

bar.innerHTML = z; …
Run Code Online (Sandbox Code Playgroud)

javascript anonymous-function

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

在Clojure中,是否可以在匿名函数中定义匿名函数?

例如,解决以下问题

http://projecteuler.net/problem=5

我提出了以下解决方案

(defn div [n] (= 0 (reduce + (map #(mod n %) (range 1 21)))))
(take 1 (filter #(= true (div %)) (range 20 1e11 20)))
Run Code Online (Sandbox Code Playgroud)

假设一些高尔夫乐趣,我希望将第一行作为匿名函数合并到第二行.语言支持这个吗?

clojure anonymous-function

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

python 中匿名函数的配方?

我正在寻找允许在 python 中内联定义函数或多行 lambda 的最佳食谱。

例如,我想执行以下操作:

def callfunc(func):
   func("Hello")

>>> callfunc(define('x', '''
...     print x, "World!"
... '''))
Hello World!
Run Code Online (Sandbox Code Playgroud)

define我在这个答案中找到了该函数的示例:

def define(arglist, body):
    g = {}
    exec("def anonfunc({0}):\n{1}".format(
        arglist,
        "\n".join("    {0}".format(line) for line in body.splitlines())), g)
    return g["anonfunc"]
Run Code Online (Sandbox Code Playgroud)

这是一种可能的解决方案,但并不理想。理想的功能是:

  • 更聪明地处理缩进,
  • anonfunc更好地隐藏内部结构(例如,在函数范围内没有)
  • 提供对周围范围/捕获中的变量的访问
  • 更好的错误处理

以及一些我没有想到的事情。我有一个非常好的实现,完成了上述大部分内容,但不幸的是我失败了。我想知道是否有其他人做过类似的东西。

免责声明:

我很清楚这在 Python 用户中是有争议的,并且被认为是 hack 或 unpythonic。我还知道 python-dev 邮件列表上有关多行 lambda 的讨论,并且故意省略了类似的功能。然而,从同样的讨论中我了解到许多其他人也对这样的功能感兴趣。

我不是在问这是否是一个好主意,而是:既然有人决定实施这个,(要么出于乐趣和好奇,要么出于疯狂,真正认为这是一个好主意,要么被枪指着)如何使匿名define工作尽可能接近def使用Python(2.7或3.x)当前的设施?

例子:

更详细地解释一下为什么,这对于 GUI 中的回调来说非常方便:

# gtk example:
self.ntimes = 0
button.connect('clicked', …
Run Code Online (Sandbox Code Playgroud)

python anonymous-function

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

如何从js中的匿名函数返回值

我想从匿名函数返回值。如何在下面的代码中将返回值分配给 $id 变量?

$(document).on("click", '.delete-component', function(e) {
     return 4;
 });

 //$id in this scope should be equal 4
Run Code Online (Sandbox Code Playgroud)

javascript anonymous-function

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

功能句柄内部的逻辑短路

我有一个函数句柄,可以在任意大小的2d数组上运行:

R2T = @(DL1,DL2) arrayfun(@(DL1,DL2)...
                 1/(fzero(@(x)fFitObj1(x)./fFitObj2(x)-...
                 DL1./DL2,[minLim maxLim])) ...
                 ,DL1,DL2) - C1;
Run Code Online (Sandbox Code Playgroud)

这是一个自下而上的细分:

  • fzero(@(x)fFitObj1(x)./fFitObj2(x)-DL1./DL2,[minLim maxLim])- 该位在间隔上查找所考虑函数的零[minLim maxLim],其中fFitObj1fFitObj2是之前可用的函数句柄,C1是一些已知的常量并且DL1, DL2被提供.
  • @(DL1,DL2)1/(fzero(...))- fzero允许DL1DL2从外部提供的包装.
  • arrayfun(@(DL1,DL2)...,DL1,DL2)- 另一个包装器,允许fzeroDL1, DL2作为矩阵提供时逐个元素地正确操作.
  • R2T = @(DL1,DL2) arrayfun(...) - C1;- 另一个允许DL1, DL2从外部提供的包装器.

我的问题是有时矩阵DL1, DL2可能包含NaN值,在这种情况下fzero返回以下错误:

Error using fzero (line 242)
Function values at interval endpoints must be finite and real.
Run Code Online (Sandbox Code Playgroud)

这就是为什么我自然想到了可用的 …

matlab anonymous-function lazy-evaluation short-circuiting logical-operators

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

你如何在 PHP 的类中使用匿名函数?

我如何$greet在这个班级内部打电话?我正在使用 PHP 5.5.4。

<?PHP   
class Model
{
    public $greet = function($name)
    {
        printf("Hello %s\r\n", $name);
    };
}

$test = new Model();
$test->greet('World');
$test->greet('PHP');
?>

Parse error: syntax error, unexpected '$greet' (T_VARIABLE), expecting function (T_FUNCTION)
Run Code Online (Sandbox Code Playgroud)

也试过这个,

$test = new Model();
call_user_func($test->greet('World'));
call_user_func($test->greet('PHP')) 
Run Code Online (Sandbox Code Playgroud)

匿名函数在类外工作正常(直接来自手册)。

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet('World');
$greet('PHP');
?>
Run Code Online (Sandbox Code Playgroud)

编辑:我在电话中取出美元符号(我在回答开始时抓住了它。它没有帮助,

call_user_func($test->greet('World'));
call_user_func($test->greet('PHP'));
Run Code Online (Sandbox Code Playgroud)

编辑:

class Model
{
    public $greet;
    function __construct()
    {
        $this->greet = function($name)
        {
            printf("Hello %s\r\n", $name);
        };
    }
} …
Run Code Online (Sandbox Code Playgroud)

php anonymous-function

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

Scala IDE警告:"匿名函数可转换为方法值"

假设我想为方法创建一个别名:

def foo = bar(_)
Run Code Online (Sandbox Code Playgroud)

这将警告

匿名函数可转换为方法值

而且我不太确定这是什么意思,因为当我尝试我认为这可能意味着什么时:

def foo = bar
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

缺少方法栏的参数(a:A)

无法解析具有此类签名的参考栏.

methods alias scala anonymous-function

6
推荐指数
2
解决办法
2660
查看次数

Julia 匿名函数和性能

我正在移植这个 Python 代码...

with open(filename, 'r') as f:
    results = [np.array(line.strip().split(' ')[:-1], float)
               for line in filter(lambda l: l[0] != '#', f.readlines())]
Run Code Online (Sandbox Code Playgroud)

……给朱莉娅。我想出了:

results = [map(ss -> parse(Float64, ss), split(s, " ")[1:end-1])
        for s in filter(s -> s[1] !== '#', readlines(filename))];
Run Code Online (Sandbox Code Playgroud)

这种移植的主要原因是潜在的性能提升,所以我在 Jupyter notebook 中对两个片段进行了计时:

  • 使用%%timeit...
    • Python: 12.8 ms ± 44.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
    • 朱莉娅:@benchmark返回(除其他外)mean time: 8.250 ms (2.62% GC)。到现在为止还挺好; 我确实得到了性能提升。
  • 但是,在使用时@time: …

python performance anonymous-function julia

6
推荐指数
2
解决办法
213
查看次数