问题标签 [first-class-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
547 浏览

ios - 在选择器中使用 Swift3 函数参数

我正在尝试传递一个函数以将其作为目标添加到 Swift3 中的 UIButton,但出现以下错误:

这是我的代码:

我将传入的函数包装在另一个函数中,所以我知道拥有它的类。

我认为问题在于 Objective-C 不支持 Swift 中的第一类函数,并且 selector 关键字仅使用 Objective-C 函数。

有谁知道解决这个问题的方法?

0 投票
1 回答
72 浏览

javascript - 了解 Javascript 中关于一流函数的“副作用”

我遇到了一个特别有趣的案例,我认为这是 Javascript 的副作用。

我正试图围绕范围和函数是一等公民这一事实。如果我走在正确的轨道上,请告诉我,如果这是一个新手问题,请原谅我。

参考以下代码:

在第一个 consol.log 的情况下,输出是:mrGlobal version 2。
在第二个 consol.log 的情况下,输出是:mrGlobal 最近表现得很奇怪

我最初认为这会导致 opppsite 行为(第一个 console.log 与第二个 console.log 切换)所以这个输出让我感到惊讶。我假设这是因为 javascript 中的函数绑定到声明它们的范围而不是执行它们的范围 - 即使它们作为一等公民传递到该范围?

0 投票
1 回答
1945 浏览

python - 在 python 中实现观察者模式的替代方法

我正在浏览一篇关于如何在 python 中实现观察者模式的帖子。在同一个帖子上有这些评论。

1)在python中你也可以只使用普通函数,'Observer'类并不是真正需要的。

2) 这是 Java 程序员在切换到 Python 后尝试做的一个很好的例子——他们觉得 Python 缺少所有这些废话并尝试“移植”它。

这些评论暗示观察者模式在 python 中并不是真正有用的,并且存在其他方法可以达到相同的效果。这是真的吗?如果怎么做呢?

下面是观察者模式的代码:

0 投票
1 回答
415 浏览

javascript - 闭包和 funarg 问题之间的区别?

我有一个错误的理解,过滤器功能是向下功能问题的一个例子吗?我在源面板下使用 chrome 调试器,并在范围部分注意到了这一点。

我的描述截图

过滤器函数参数cb是闭包还是函数strainer是闭包?我发现很难对网络上有关闭包和 funarg 问题的信息进行分类。我显然不明白 funarg 问题或闭包,需要帮助吗?

背景:我的印象是返回到外部环境的私有变量创建了闭包,但示例看起来有些不同。

下面的燧石函数示例在引号函数的范围内具有封闭性。(我认为这是向上的 funarg 问题)

0 投票
1 回答
188 浏览

javascript - Javascript 第一类函数

在 SO 阅读 Javascript First Class Functions 时,我遇到了这个链接: What is mean by 'first class object'? 其中我发现了这个有趣的例子:

我需要有人来解释这段代码,这里的执行方式。尤其是表达式men(like(women))和​​/或women(like(men))。这是如何产生最终结果的......

提前致谢

0 投票
1 回答
102 浏览

python - Difference between these python visitor design pattern implementation choices?

I was reading the implementing_the_visitor_pattern_without_recursion from Python Cookbook, Third Edition

The implementation with additional Visit Class fix the defect in the one without it as it claims.

“One potential danger of this recipe concerns the distinction between yielding Node and non-Node values. In the implementation, all Node instances are automatically traversed. This means that you can’t use a Node as a return value to be propagated. In practice, this may not matter. However, if it does, you might need to adapt the algorithm slightly. For example, possibly by introducing another class into the mix, like this:”</p>

Excerpt From: David Beazley. “Python Cookbook.” iBooks.

Here are the questions:
1: Under what circumstance does this potential danger would happen
2: How does the additional Visit Class come to fix it?

(I don't understand and as far as I can see the Visit class is merely a useless wrapper on the node)
(May be just because I am stupid, could someone explain it to me in more detail and with some code probably? Thanx for reading)

0 投票
2 回答
198 浏览

python-3.x - 一等函数的词汇

例如,当人们说 Python 具有第一类函数时,听起来 Python 也具有第二类函数。但是,我还没有(有意地)在 Python 中遇到过第二类函数。当我们这么说时,它真的意味着“所有 Python 函数都是一流的吗?” 或者是否有 Python 中第二类函数的示例?

0 投票
1 回答
75 浏览

javascript - 将 function.call 分配给变量

我有这个代码

typeof b'function'console.log(b)显示ƒ call() { [native code] }

有人可以解释这种行为吗?

0 投票
1 回答
435 浏览

python - 内部/嵌套方法关闭的 Python 3 参数超出范围并触发 UnboundLocalError

编辑:为什么人们不赞成这篇文章?Python 开发者真的这么无能吗?这是一个合理的问题,而不是在其他地方得到回答的问题。我寻找解决方案。我不是白痴。一个参数有一个值,另一个是未定义的,但如果你真的阅读了这篇文章,你会发现它们的范围似乎是相同的。

首先,我向您保证,这个问题与其他涉及错误消息的问题不同:

UnboundLocalError: local variable referenced before assignment closure method

当我查看这段代码时,似乎uuidString顶级方法的参数 ,getStockDataSaverFactory当方法返回其内部方法时,实际上应该在范围内saveData,作为一等函数对象......因为令我惊讶的是,参数tickerName在范围内并且在调用方法时确实具有值“GOOG” saveData()(例如通过测试方法testDataProcessing_getSaverMethodFactory),因此我们实际上可以看到在调用方法时它具有实际值getDataMethodFactory(..) ,不像uuidString.

为了使问题更明显,我添加了以下几行:

localUuidString = uuidString

experimentUuidString = localUuidString

当断点检查方法时,表明参数uuidString具有可用值。

只是为了清楚说明uuidString没有价值但ticker确实有价值,我将这个截图包括在内:

带断点的 PyCharm 屏幕截图

请注意,在变量监视窗口中,uuidString未定义,但ticker具有字符串值“A”。

Python(或 Python 3)是否有一些独特的东西导致了这种行为?

0 投票
1 回答
69 浏览

lua - 将函数分配给变量或表时的不同行为

我在表和带有函数的简单变量分配之间有不同的行为。例如,在分配数字时不存在这种差异。

func is function(x) return 10*x end 但是:我得到 arrFunc={function(x) return 10*x end, nil } 而不是 arrFunc={function(x) return 10*x end, function(x) return 10*x 结束}

当对我来说 func 和 arrFunc[2] 只是用于接收数据(包括一流函数)的同一个“盒子”时,我不明白这种区别。

可能是一个线索(我不明白):在控制台中,执行最后一行后,我有以下信息: