问题标签 [local-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 投票
2 回答
55 浏览

python - 你能以某种方式在 python 的全局级别上使用本地函数吗?

我正在编写一个程序,我正在使用espeak库来让它说话。问题是我已经编写了我的程序,但现在我想在开始时询问用户他是希望程序与他交谈还是仅仅依靠阅读。因此,如果他说是,则程序使用 using espeak,但如果他说否,则程序不使用espeak,所以我被困在 no 部分。

我想问一个问题并根据答案使用正确的函数,但问题是它是一个本地函数,所以当你使用espeak()它说的函数时

这就是我想要的:

那么有没有办法使该def espeak()功能在全局范围内工作,以便我可以将它用于我的程序的其余部分?

(除了处理孔东西并粘贴在没有espeak功能的no部分之外)

0 投票
1 回答
192 浏览

flutter - dart:为什么本地函数不能互相调用?

编译器说“局部变量在声明之前不能被引用”

但是为什么全局函数可以递归调用而局部函数不能呢?

我需要知道为什么以及针对这种情况的一些好的解决方法。

0 投票
1 回答
76 浏览

c# - 任何人都知道 IL/CLR 如何准确生成局部函数 C#7

https://www.infoworld.com/article/3182416/c-7-in-depth-exploring-local-functions.html

我真的需要确切地知道以下代码应该如何本地函数。

我是 0% IL 代码/MSIL 经验。

我需要从以前的代码中知道的问题:

  1. 如果我们调用主函数Display(),本地函数是否DisplayText()总是在主函数调用时生成?或者它在 C# 中创建为假本地函数,但在 MSIL 中它生成为全局函数?
  2. 在lamda表达法中?和上面一样吗?
  3. 依赖本地函数是否安全?还是我们无论如何都不要使用它。(性能可能idk

编辑:-我认为本地属性(尚不存在或可能......)。它有时也很有用。您可以在与本地属性相同的方法中进行一些计算。与前面的示例一样,但 DisplayText 是属性。希望他们也添加它。

0 投票
0 回答
41 浏览

c# - ThrowHelper 启用内联:静态本地函数?

.NET 的大部分代码库都包含 throw 帮助程序,静态方法仅用于抛出某个异常。如果我没记错的话,这是因为直接抛出的方法永远不会内联(大概是为了产生足够的堆栈跟踪)。通过将throw语句移动到辅助方法中,主要方法成为内联的候选方法。

这也适用于静态本地函数吗?或者这些是否也有任何阻止内联的特征?

我在任何地方都找不到这个。我的理论是静态局部函数被编译为常规静态方法,因此在内联时应该没有不同的特征。不过,最好确定一下。如果我们跳过篮球,它最好有预期的效果。

0 投票
2 回答
65 浏览

c# - 本地函数的代码被创建了多少次?只有一次或任何时候调用父函数?

现代 C# 支持定义嵌套函数。例如:

我写上面的例子只是作为一个测试用例场景,能不能重构也没关系。现在的问题是,该isNumberValid函数创建了多少次?它是否仅以编译器将其移出父功能块的方式创建一次?还是在任何时候调用父函数(范围在父堆栈下)时在运行时重新创建它?

0 投票
3 回答
121 浏览

common-lisp - 在 Common Lisp 中使用标签与 helper-and-main 与嵌套 defun 之间的比较。哪个是最好的?

我正在尝试通过Common Lisp:符号计算的简单介绍一书来学习 Common Lisp 。此外,我正在使用 SBCL、Emacs 和 Slime。

在第8章的高级部分,作者介绍了labels特殊功能。实际上,他在顶层(主函数和辅助函数)上定义事物与在label函数内使用表达式进行了对比。

例如,这将是一个reverse使用顶级方法的带有尾调用的列表函数:

另一方面,下面的代码将使用以下代码执行相同的操作labels

因此,标签方法避免了人们搞砸顶层辅助函数的机会。与顶级方法不同,标签方式提供对主函数的局部变量的访问。

不幸的是,根据作者的说法,在大多数 lisp 实现中,无法跟踪标签表达式中的函数。这似乎是我的情况,因为我从 REPL 得到这个:

让我感兴趣的一点是,作者没有展示在 Racket 中很常见的第三种方法。我将其称为嵌套的 defuns

同样的问题将被解决为:

在这种方法中,辅助函数可以从主函数访问局部变量。它也可以被 REPL 追踪。

我一整天都在使用它。所以我知道它可以在具有许多使用它的功能的文件中工作。实际上,考虑到我使用了一堆不同的辅助函数并且它们都具有相同的名称,aux在球拍风格下被调用,我什至不知道 trace 是如何工作的。trace知道我想看哪个辅助。

最重要的是,这个遗漏真的让我很感兴趣。特别是因为我真的很喜欢这本书。我想我可能遗漏了一些东西。

1 - 为什么没有提到这种方法?这种带有嵌套 defun 的“球拍风格”在 Common Lisp 中被认为是不好的风格吗?

2 - 我是否遗漏了一些重要的细节(例如,这种方法可能是难以发现错误或产生性能问题的根源)?

3 - 这种遗漏是否有一些历史原因?

0 投票
1 回答
518 浏览

c# - 为什么使用本地函数而不是仅仅内联代码更好?

我在这里找到了这段代码:

起初我不明白这部分return _(); IEnumerable<TSource> _(),但我意识到它是在同一行中调用和声明的本地函数。它是在这里完成的。

我的问题是:与简单地内联该代码相比有什么优势吗?

我会说当前版本更冗长并且缩进更多,那么优势是什么?只是口味问题?

0 投票
1 回答
79 浏览

c++ - 有没有办法让派生实例使用现有的基础实例

对于类层次结构,例如:

我想要一种创建实例derived但使用现有base实例的方法。例如:

有没有办法进行设置,以便在调用d.f()值为b.i2 之后?正如我试图指出的那样,生命周期derived相当短。

从概念上讲,我想让base看起来像derived一会儿,“看起来像”意味着访问d.j. 完成后,我希望对 to 所做的更改d.i“坚持” b.i。成员变量的明显解决方案base& b不起作用,因为访问i需要不同的语法:b.i而不是i.

将实例复制derivedbase我完成时会起作用;但这似乎很臭。

但我真的只想要并且需要一个base.


实际发生的是我正在尝试模拟嵌套函数;但我不想更改语法以访问ij

在伪代码中,我想做类似的事情:

换句话说,“本地函数”的实际代码远离它的声明位置。

0 投票
1 回答
54 浏览

c - 如何在C的主函数内部传递具有结构的用户定义函数?

如何将内部具有结构的用户定义函数“add()”传递给C中的main()函数?

如果执行上述程序,则会引发错误。但是我们已经在 add() 中声明了这个结构。所以如果我们在 main 函数中调用 add 它应该运行结构吗?为什么会抛出错误?

type-1 和 type-2 有什么区别?1型

2型

0 投票
2 回答
100 浏览

c# - 您可以在 C# 本地函数中使用三元运算符吗?

这是我想要实现的:

但是,我收到编译错误。这种语法甚至可能吗?我正在使用 Visual Studio 2019、.NET Framework 4,它(当前)等同于 C# 7.3。

注意 - 我只是想弄清楚语法......关于代码的“可读性”或其他美学的任何哲学讨论虽然很有趣,但都是无关紧要的。:)

代码示例(使用 Roslyn 4.0) https://dotnetfiddle.net/TlDY9c