问题标签 [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.
first-class - 一等公民
维基文章中对一等公民的定义说:
一个对象是一流的,当它
- 可以存储在变量和数据结构中
- 可以作为参数传递给子程序
- 可以作为子程序的结果返回
- 可以在运行时构建
- 具有内在身份(独立于任何给定名称)
有人可以解释/详细说明第 5 个要求(粗体)吗?我觉得这篇文章应该提供更多细节,比如“内在身份”在什么意义上捕捉。
也许我们可以在讨论中使用 Javascript 中的函数和 C 中的函数来说明第 5 个项目符号。
我相信 C 中的函数是二等的,而 Javascript 中的函数是一等的,因为我们可以在 Javascript 中执行以下操作:
,这在 C 中是不允许的。
同样,我的问题实际上是第 5 个项目符号(要求)。
javascript - js:从变量中返回一个一流的对象和一个字符串
我已经构建了一个将使用模块的插件。基本上可以添加到代码中以提供附加功能的功能。
插件中有一个调用这些模块的函数。以前,我是这样称呼他们的:
每行的最后一部分是将在 processInstance 脚本中调用的函数的名称。因此,我将函数的名称作为字符串和每一行的第一类对象。我想把它简化成这样:
模块数组被添加到实际模块代码的每个实例之后。我这样做是这样的:
这不起作用,因为 window[module[i]] 返回未定义。
我的代码需要如何修改才能使其正常工作?
这是整个插件的 jsfiddle 示例,其中插入了一个简单的模块:http: //jsfiddle.net/michaeljimmy/U8anp/1/
javascript - javascript中警报功能的意外行为
我正在尝试警报,但警报没有按我预期的那样工作,请看以下几行:
现在当我提醒这一点时:
这会很好用!现在
在这我删除了括号。现在它function(){return "worked"}
不是worked!
现在提醒我认为它可能是javascript的一个功能,它会提醒任何文本而不用引号然后我写道:
但是谷歌控制台抛出异常worked!
是未定义的,所以我的想法是错误的。然后我又写了这个
你知道它警告了什么function(){}
!然后我认为警报只允许在不带引号的情况下提醒此类声明。然后又写道:
但是这些对这个不起作用我搜索并找到了一些东西,从我的搜索中我找到了这个
函数是第一类对象
并根据维基百科:
在计算机科学中,如果将函数视为一等公民,则称编程语言具有一等函数。具体来说,这意味着该语言支持将函数作为参数传递给其他函数,将它们作为来自其他函数的值返回,并将它们分配给变量或将它们存储在数据结构中
所以我的问题是
为什么
alert
功能只允许function (){}
被提醒而不是其他人
如果您认为这是因为该函数是一等对象,那么我不这么认为,因为我没有将此函数(最后一个)分配给任何变量,它也不返回任何变量alert(function(){})
我很好奇也很困惑!谢谢!
javascript - 如何在javascript中制作一流的对象
在阅读了第一类对象之后,我决定让我的新的第一类对象像一个函数,但使用另一个名称。我搜索并发现了很多关于 javascript 函数的东西。
我的研究结论
1)每个函数都是一个对象,也可以被视为一个对象。
看这里的代码:
从页面this
据我所知,之前定义的任何函数都可以使用new
构造函数调用,即:
现在我可以通过使用new
它来调用它:
所以从上面的例子中我可以说之前定义的函数然后 withnew
可以再次调用!
我不知道什么
1)函数如何使用它的圆括号,
2)看不懂线路Function( "a", " return a + 1;");
3)我们如何实现功能?
我知道你肯定会不喜欢这个问题,但我想这样做是因为我想了解 JavaScript 的每一个细节。
谢谢!
erlang - Erlang 中的一流模式?(备择方案)
有没有办法在 Erlang 中创建一流的模式?我需要能够创建模式并将其作为参数传递给其他函数,但我知道模式在 Erlang 中不是一流的。我还查看了 Elixir,但就模式而言,它似乎没有提供更多功能。
我想知道是否有人想出了一个简单的解决方案来解决这个问题。我正在考虑尝试实现这样的东西:
我是 Erlang 的新手,所以也许这完全没有必要。也许有一个图书馆可以做这种事情?
任何意见是极大的赞赏。提前致谢!
command-line - 动态实例化 OCaml 中的模块
我有几个模块实现了相同的接口。我只想根据命令行上给出的一个参数加载此模块中的一个。
我正在考虑使用一流的模块,但问题是我想在模块实例化之前执行一些功能。
目前我有这个:
但是由于尚未解析命令行,因此Options.get_arch
请给我空字符串。
我想在执行此函数之前实现命令行解析(不添加函数中的解析)。可能吗 ?我应该找到其他方法来实现这一目标吗?
python - Python中作为函数指针的类字段
我想在我的类 Point 中有一个函数指针。
我正在尝试将函数指针传递给字段“val”,但是当我尝试使用方法 value() 调用该函数时,它返回 0:
如何将函数传递给类字段?
swift - swift中的一流通用函数?
Swift 具有可以作为参数传递的一流函数。
Swift 具有通用功能。
但是,Swift 是否允许我将泛型函数作为参数传递给另一个函数?
…或者它只让我传递一个通用函数的特定实例?
如果可能,请说明定义接受泛型函数作为参数的函数的语法。
如果这不受支持,解决方法是将泛型函数定义为结构或其他东西的方法,并传递 an 而不是。但这并不理想,因为消费函数没有得到如此好的调用语法,他们需要这样做: