问题标签 [first-class]

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 回答
3940 浏览

first-class - 一等公民

维基文章中对一等公民的定义说:

一个对象是一流的,当它

  • 可以存储在变量和数据结构中
  • 可以作为参数传递给子程序
  • 可以作为子程序的结果返回
  • 可以在运行时构建
  • 具有内在身份(独立于任何给定名称)

有人可以解释/详细说明第 5 个要求(粗体)吗?我觉得这篇文章应该提供更多细节,比如“内在身份”在什么意义上捕捉。

也许我们可以在讨论中使用 Javascript 中的函数和 C 中的函数来说明第 5 个项目符号。

我相信 C 中的函数是二等的,而 Javascript 中的函数是一等的,因为我们可以在 Javascript 中执行以下操作:

,这在 C 中是不允许的。

同样,我的问题实际上是第 5 个项目符号(要求)。

0 投票
1 回答
27 浏览

javascript - js:从变量中返回一个一流的对象和一个字符串

我已经构建了一个将使用模块的插件。基本上可以添加到代码中以提供附加功能的功能。

插件中有一个调用这些模块的函数。以前,我是这样称呼他们的:

每行的最后一部分是将在 processInstance 脚本中调用的函数的名称。因此,我将函数的名称作为字符串和每一行的第一类对象。我想把它简化成这样:

模块数组被添加到实际模块代码的每个实例之后。我这样做是这样的:

这不起作用,因为 window[module[i]] 返回未定义。

我的代码需要如何修改才能使其正常工作?

这是整个插件的 jsfiddle 示例,其中插入了一个简单的模块:http: //jsfiddle.net/michaeljimmy/U8anp/1/

0 投票
5 回答
233 浏览

javascript - javascript中警报功能的意外行为

我正在尝试警报,但警报没有按我预期的那样工作,请看以下几行:

现在当我提醒这一点时:

这会很好用!现在

在这我删除了括号。现在它function(){return "worked"}不是worked! 现在提醒我认为它可能是javascript的一个功能,它会提醒任何文本而不用引号然后我写道:

但是谷歌控制台抛出异常worked!是未定义的,所以我的想法是错误的。然后我又写了这个

你知道它警告了什么function(){}!然后我认为警报只允许在不带引号的情况下提醒此类声明。然后又写道:

但是这些对这个不起作用我搜索并找到了一些东西,从我的搜索中我找到了这个

函数是第一类对象

并根据维基百科:

在计算机科学中,如果将函数视为一等公民,则称编程语言具有一等函数。具体来说,这意味着该语言支持将函数作为参数传递给其他函数,将它们作为来自其他函数的值返回,并将它们分配给变量或将它们存储在数据结构中

所以我的问题是

为什么alert功能只允许function (){}被提醒而不是其他人

如果您认为这是因为该函数是一等对象,那么我不这么认为,因为我没有将此函数(最后一个)分配给任何变量,它也不返回任何变量alert(function(){})

我很好奇也很困惑!谢谢!

0 投票
2 回答
107 浏览

javascript - 如何在javascript中制作一流的对象

在阅读了第一类对象之后,我决定让我的新的第一类对象像一个函数,但使用另一个名称。我搜索并发现了很多关于 javascript 函数的东西。


我的研究结论

1)每个函数都是一个对象,也可以被视为一个对象。

看这里的代码:

从页面this

据我所知,之前定义的任何函数都可以使用new构造函数调用,即:

现在我可以通过使用new它来调用它:

所以从上面的例子中我可以说之前定义的函数然后 withnew可以再次调用!


我不知道什么

1)函数如何使用它的圆括号,

2)看不懂线路Function( "a", " return a + 1;");

3)我们如何实现功能?


我知道你肯定会不喜欢这个问题,但我想这样做是因为我想了解 JavaScript 的每一个细节。

谢谢!

0 投票
4 回答
284 浏览

erlang - Erlang 中的一流模式?(备择方案)

有没有办法在 Erlang 中创建一流的模式?我需要能够创建模式并将其作为参数传递给其他函数,但我知道模式在 Erlang 中不是一流的。我还查看了 Elixir,但就模式而言,它似乎没有提供更多功能。

我想知道是否有人想出了一个简单的解决方案来解决这个问题。我正在考虑尝试实现这样的东西:

我是 Erlang 的新手,所以也许这完全没有必要。也许有一个图书馆可以做这种事情?

任何意见是极大的赞赏。提前致谢!

0 投票
1 回答
720 浏览

python - 如何让 Python 2 的 __getitem__ 在类上工作?

我如何进行项目访问,即。__getitem__在 Python 2.x 中的类对象上可用?

我试过了:

测试:

我如何__getitem__在课堂上工作?

0 投票
1 回答
184 浏览

javascript - JavaScript 中的一等变量

0 投票
1 回答
350 浏览

command-line - 动态实例化 OCaml 中的模块

我有几个模块实现了相同的接口。我只想根据命令行上给出的一个参数加载此模块中的一个。

我正在考虑使用一流的模块,但问题是我想在模块实例化之前执行一些功能。

目前我有这个:

但是由于尚未解析命令行,因此Options.get_arch请给我空字符串。

我想在执行此函数之前实现命令行解析(不添加函数中的解析)。可能吗 ?我应该找到其他方法来实现这一目标吗?

0 投票
1 回答
786 浏览

python - Python中作为函数指针的类字段

我想在我的类 Point 中有一个函数指针。

我正在尝试将函数指针传递给字段“val”,但是当我尝试使用方法 value() 调用该函数时,它返回 0:

如何将函数传递给类字段?

0 投票
3 回答
417 浏览

swift - swift中的一流通用函数?

Swift 具有可以作为参数传递的一流函数。

Swift 具有通用功能。

但是,Swift 是否允许我将泛型函数作为参数传递给另一个函数?

…或者它只让我传递一个通用函数的特定实例?

如果可能,请说明定义接受泛型函数作为参数的函数的语法。

如果这不受支持,解决方法是将泛型函数定义为结构或其他东西的方法,并传递 an 而不是。但这并不理想,因为消费函数没有得到如此好的调用语法,他们需要这样做: