问题标签 [function-declaration]

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

function - SML 中的“循环”函数声明

我想以“循环”方式使用函数,如下例所示:

写这个会在 SML 中产生一个错误,即构造函数cll2未绑定。有人可以帮我写一些类似的东西吗?在 C 中是可能的;我想用 SML 写它。

0 投票
3 回答
16229 浏览

c++ - 为什么**不**将函数声明为`constexpr`?

任何只包含 return 语句的函数都可以被声明 ,因此如果所有参数都是并且只有函数在其主体中被调用,constexpr则允许在编译时进行评估。有什么理由不声明任何这样的功能吗?constexprconstexprconstexpr

例子:

任何人都可以提供一个声明函数constexpr 会造成任何伤害的例子吗?


一些初步的想法:

即使没有充分的理由声明一个函数constexpr,我也无法想象该constexpr关键字具有过渡作用:它在不需要编译时评估的代码中的缺失将允许不实现编译时评估的编译器仍然可以编译该代码(但在需要它们的代码上可靠地失败,因为使用明确表示constexpr)。

但我不明白的是:如果没有充分的理由声明一个函数 not constexpr,为什么不声明标准库中的每个函数constexpr?(你不能说它还没有完成,因为还没有足够的时间去做,因为为所有人做这件事是不费吹灰之力的——这与决定是否做每一个功能相反constexpr。)—— - 我知道N2976 故意不需要 cstrs 用于许多标准库类型(例如容器),因为这对于可能的实现来说太有限了。让我们将它们排除在参数之外,只是想知道:一旦标准库中的类型实际上有一个constexprcstr,为什么不是每个在它上运行的函数都声明constexpr?

在大多数情况下,您也不能争辩说您可能不喜欢声明函数constexpr,因为您没有设想任何编译时使用:因为如果其他人 evtl. 将使用您的代码,他们可能会看到您没有看到的这种用法。(但当然,对于类型特征类型和类似的东西是允许的。)

所以我想故意不声明一个函数一定有一个很好的理由和一个很好的例子constexpr吗?

(对于“每个函数”,我始终是指:每个满足存在要求的函数constexpr,即,被定义为单个 return 语句,只接受具有 constexpr cstrs 类型的参数并且只调用constexpr函数。从 C++14 开始,更多在此类函数的主体中是允许的:例如,C++14 constexpr 函数可以使用局部变量和循环,因此可以声明更广泛的函数类constexpr。)

问题为什么要std::forward丢弃constexpr-ness?是这个的一个特例。

0 投票
3 回答
130 浏览

function - 函数“标准化”

这是来自 DB 规范化理论的一个概念:

当一个非关键字段是关于另一个非关键字段的事实时,违反了第三范式。

将类似的概念应用于函数/函数参数是否有意义?


考虑以下函数:

在这个示例函数中,第三个参数描述了第二个参数,并且似乎对第一个参数没有“态度”。在某种程度上,它感觉像是一个非规范化的函数。

我不知道我是否正确地制定了这一点,但我可以注意到数据库中的表名和表字段以及函数名和函数参数之间的类比。

如果这样的类比有意义,那么函数设计者从 DB 规范化理论中借用概念是否也有意义?

0 投票
3 回答
15109 浏览

c - 为什么空声明适用于具有 int 参数的定义,但不适用于 float 参数?

我认为不同之处在于declaration没有参数类型......

为什么会这样:

但这无法编译:

留言:

错误:“fuc”的类型冲突。注意:具有默认提升的参数类型不能匹配空参数名称列表声明

0 投票
4 回答
277 浏览

javascript - Javascript:分叉函数声明效率高多少?

我刚刚阅读了这篇关于命名函数表达式及其与 IE <= 8 的不兼容性的文章。

我特别对一种说法感到好奇:

Web 开发中的一种常见模式是基于某种特性测试“分叉”函数定义,以实现最佳性能。

取自他的页面的示例:

当我看到这一点时,我的第一反应是,这将是可怕的维护。以这种方式编写的代码实际上并不易于理解。

在这种情况下,与其在另一个函数中有条件地定义一个函数,然后在声明外部函数后立即调用该函数,不如编写一个嵌套ifs 的函数。它会更长,但在我看来更容易理解(尽管我来自 C/C++/Java)。

我更喜欢包含一些测试数字或解释这些功能在运行时有何不同的答案。

0 投票
4 回答
8727 浏览

c++ - 使用多个头文件和 cpp 文件帮助

我正在使用 DragonFireSDK 制作一个应用程序,我想用 .cpp 和 .h 文件组织我的数千行应用程序

我在尝试做事情时遇到很多错误

所以我的 app.cpp (main, required one) 看起来像这样

代码:

#include "SaveData.h" 到 #include "Variables.h" 都有类似代码:

现在我可能已经做错了,但这里还有一些......我的 AppMain.cpp、OnTimer.cpp 等看起来像这样(AppMain() 等也是必需的函数)代码:

现在这就是我认为问题所在... Functions.cpp 代码:

现在我想如果修复了所有的东西,我得到的错误......代码:

非常感谢任何帮助!

0 投票
2 回答
188 浏览

haskell - haskell中的类型是什么意思

我在课堂上被问到这个问题让我很困惑,我们得到了以下内容:

对于波纹管类型声明:

以下有哪些类型?不是上面那个吗?!

所以我的回应是这样的:

除了错误之外,这个问题让我感到困惑,因为我认为函数的类型是在之后声明的::,因此它已经给出了,不是吗?

我可以做一些解释,我将非常感谢任何帮助。

0 投票
5 回答
214 浏览

function - (a -> a) 和 a -> a 之间的区别

我注意到(尽管我曾经被告知(a -> a)并且a -> a意思相同),当我使用(a -> a). 我应该只(a -> a)在类型之间使用括号时使用吗?(即(5 + 3)代替5 + 3)?只是不太确定何时需要

0 投票
2 回答
186 浏览

python - 奇怪的 IPython 行为:变量名中的“pass”、“return”或“raise”终止函数/类定义

我一直在 IPython shell 中完成SQLAlchemy ORM 教程password = Column(String),并且到了必须放入类定义的地步。奇怪的是,类定义一输入就终止了。

玩了一会儿之后,我发现任何以 , 开头的行passreturn或者raise在类或函数定义中,例如

终止 IPython 中的定义。这在默认的 python 解释器中不会发生,所以这不是 python 问题。我认为这是 IPython 中的一个错误,但想确保它不仅仅是我的系统;任何人都可以验证这种行为吗?

编辑:我使用 IPython 0.11.dev 预装在 Mac OS X Snow Leopard 上的 Python 2.6。在 0.10.2 上,它实际上并没有终止函数/类定义——也没有

但它确实错误地重置了缩进,因此如果Enter再次按下,类定义将结束。

0 投票
4 回答
5917 浏览

c - 函数定义中 float 的奇怪行为。声明-定义不匹配,但它有效,如何?

即使声明中的函数签名与定义不匹配,以下代码如何工作?函数声明的参数列表为空,但定义只有一个参数。为什么编译器不报错?

它编译并运行良好(ideone)。

但是,如果我将定义中的参数类型doubleto更改为float,则会出现以下错误(ideone):

prog.c:7:错误:“f”的类型冲突<br> prog.c:8:注意:具有默认提升的参数类型无法匹配空参数名称列表声明
prog.c:2:错误: 之前的 'f' 声明在这里

有什么问题float?为什么它会给出错误float而不是 with double

这是声明和定义对的列表,以及哪些对有效,哪些无效:

所以看起来,只要参数类型是float,它就不起作用!


所以我基本上有两个问题:

  • 为什么即使声明和定义不匹配,第一个示例仍然有效?
  • 为什么当参数类型为 时它不起作用float

我尝试理解第 §6.5.2.2 (C99) 部分,但该语言非常神秘,以至于我无法清楚地理解。我什至不知道我是否阅读了正确的部分。所以请用简单的话来解释这些行为。