问题标签 [nested-function]

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 投票
4 回答
118 浏览

php - PHP上的嵌套函数怪异

可能重复:
php中的嵌套函数在多次调用外部时抛出异常

为什么

在不存在的功能栏上返回致命错误

尽管

对 bar() 的重复声明给出致命错误?

php 将函数作为全局函数还是在父函数范围内处理?

0 投票
2 回答
1496 浏览

scope - 使用 C 预处理器确定当前范围?

我正在用 C / Objective-C 开发一个应用程序(请不要使用 C++,我已经有一个解决方案),我遇到了一个有趣的用例。

因为clang不支持嵌套函数,所以我原来的做法是行不通的:

这段代码可以用 GCC 很好地编译,但是因为 clang 不支持嵌套函数,我得到一个编译错误:

预期的 ';' 在声明结束时。

所以,我找到了一个适用于函数内部变量的 Clang 解决方案:

但是,我想知道是否有一种方法可以利用宏连接来选择适合这种情况的连接,例如:

显然,最终的实现不必完全如此,但类似的东西就足够了。

我曾尝试使用__builtin_constant_pwith __func__,但因为__func__它不是编译时常量,所以它不起作用。

我也尝试过使用__builtin_choose_expr,但这似乎不适用于全局范围。

我在文档中还缺少什么吗?似乎这应该是相当容易做到的事情,但是,我似乎无法弄清楚。

注意:我知道我可以简单地键入CREATE_STATIC_VAR_GLOBALCREATE_STATIC_VAR_LOCAL代替宏连接,但这是我试图突破编译器的限制。我也知道我可以使用 C++ 并立即解决这个问题,但这不是我的目标。

0 投票
1 回答
6375 浏览

oracle - 在 PLSQL 中使用嵌套函数的正确方法是什么?

我想知道在 PLSQL 中使用嵌套函数的正确方法。在下面的代码片段中,函数“to_number”工作正常,但我的两个嵌套函数不能以相同的方式使用。

0 投票
5 回答
4073 浏览

c - C中的可移植嵌套函数

是否可以使用嵌套函数/块编写可移植的 C 代码?

我知道 gcc 只支持嵌套函数作为非标准扩展,而 clang 只支持块 - 但是有没有办法编写代码,可以在使用标准 C 和 MACROS 时编译?

如果不可能 - 最好的解决方法是什么?例如,如何实现以下带参数的可移植版本?GCC 中的简单示例:

可以使用 Clang 中的 Blocks 将类似的示例放在一起。理想情况下,解决方案应该是线程安全的(因此避免使用全局变量)。

编辑:为清楚起见,让我们假设“标准”是指 C99。上面是一个简单的例子。我所追求的是一种需要一些参数的 C99 方法。在这里它只使用一个 char 作为布尔值,但我正在寻求一个需要多个整数等的解决方案。看起来如果没有全局变量,这可能是不可能的。

编辑 2:我意识到将 void 指针与函数指针一起传递可以让您完成所有可以使用嵌套函数完成的事情。感谢@Quuxplusone 的建议qsort_rqsort_s. 我试图在 and 上放置一个便携式包装qsort_rqsort_s。它需要一个比较器函数和一个 void 指针来存储状态,从而消除了对复杂排序算法的嵌套函数的依赖——因此您可以使用 GCC 和 Clang 进行编译。

注意:我没有在很多平台上测试过这个,所以如果你发现一个错误/这在你的机器上不起作用,请告诉我。

作为使用示例,我实现了与所选答案相同的排序:

0 投票
3 回答
316 浏览

syntax - Clojure/Lisp 宏可以用来实现这个 lambda 语法吗?

在 JavaScript 中将与以下内容相同:

因此,换句话说,lambdas 的简短语法(不同于 Clojure 当前的实现)允许嵌套函数。

0 投票
4 回答
13238 浏览

python - 嵌套函数中的局部变量

好的,请耐心等待,我知道这看起来会非常复杂,但请帮助我了解发生了什么。

给出:

所以基本上,为什么我没有得到三种不同的动物?不是cage'打包'到嵌套函数的本地范围吗?如果不是,如何调用嵌套函数查找局部变量?

我知道遇到这类问题通常意味着一个人“做错了”,但我想了解会发生什么。

0 投票
2 回答
3382 浏览

extjs - 如何在 ExtJS 的嵌套函数中使用作用域

scope我在嵌套函数中使用时遇到问题。我的代码在下面,并且代码中也说明了错误。如何传递scope给嵌套函数?

0 投票
3 回答
16658 浏览

python - 如何对嵌套函数进行单元测试?

f1()在以下示例中,您将如何对嵌套函数进行单元测试?

还是不应该嵌套需要测试的函数?

0 投票
2 回答
3496 浏览

javascript - Javascript从嵌套函数中调用外部函数

拥有我认为应该是一个相对容易的问题来处理是一个主要的痛苦......我正在尝试做:

我的方法是尝试:

上面的问题是前者确实有效(发生错误时没有处理除外),后者根本不会打印日志消息......它好像“theWholeThing()”调用没有像我认为的那样工作它应该(再次调用整个事情)。

这里一定有一些微妙的错误,有什么提示吗?

谢谢!

0 投票
4 回答
12474 浏览

javascript - JS:嵌套函数获得外部函数参数的副本?

因此,通过以下代码,我向自己证明了嵌套函数确实获得了外部函数参数的副本:

代码产生

这意味着该o.f函数从匿名函数中获得 a、b 和 c 的副本。否则,我只会得到undefinedundefinedundefined

我的问题是,

  • 首先,这总是正确的吗?还是有严格的条件?(比如,它必须是一个对象吗?等等)
  • 此外,在 javascript 中还存在哪些其他类型的模糊范围?我很想知道(即第三次迭代呢?)
  • 最后,我可以阅读一份解释 javascript 范围的高级概念的文档。有谁知道有什么好的吗?