Tag: 函数声明

为什么**不**要声明一个函数`constexpr`?

任何由return语句组成的函数都可以声明为constexpr ,因此,如果所有参数都是constexpr并且只有constexpr函数在其主体中被调用,则可以在编译时进行评估。 是否有任何理由不宣布这样的函数constexpr ? 例: constexpr int sum(int x, int y) { return x + y; } constexpr i = 10; static_assert(sum(i, 13) == 23, "sum correct"); 任何人都可以提供一个例子,声明一个函数constexpr会有什么危害吗? 一些最初的想法: 即使不应该声明一个函数不是constexpr充分理由,我可以想象constexpr关键字具有过渡性作用:在代码中不需要编译时评估的编译器不允许编译器评估仍然要编译该代码(但是需要使用constexpr显示需要的代码时可靠地失败)。 但是我不明白:如果没有充分的理由宣布一个function不够完善的话,为什么标准库中的每一个function都没有被宣告为constexpr ? (你不能争辩说还没有完成,因为还没有足够的时间去做,因为这样做是毫不费力的 – 与决定每一个单一function是否相反)。 – – 我知道, N2976故意不要求许多标准库types(如容器)的cstrs,因为这对于可能的实现来说太过于限制。 让我们把它们排除在参数之外,只是想知道:一旦标准库中的types实际上有一个constexpr cstr,为什么不是每个函数都声明为constexpr呢? 在大多数情况下,你也不能争辩说,你可能宁愿不去声明一个函数constexpr只是因为你没有设想任何编译时间的用法:因为如果其他人evtl. 将使用你的代码,他们可能会看到你不这样使用。 (但是,当然,types特征types和东西都是可以的。) 所以我想有一个很好的理由和一个很好的例子,故意不宣布函数constexpr ? (“每一个function”,我的意思是:每一个符合被constexpr要求的函数,也就是被定义为一个单一的return语句,只带有constexprcrstypes的参数,只调用constexpr函数。 问题为什么std::forward放弃了constexpr -ness? 这是一个特例。

如何在使用GHCi时为函数提供显式types声明?

如何在GHCi中定义这个函数的等价物(取自learnyouahaskell )? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 如果没有types声明,GHCi接受函数定义,但是最后是一个无用的types: Prelude Data.List> import Data.List Prelude Data.List> let numUniques' = length . nub Prelude Data.List> :t numUniques' numUniques' :: [()] -> Int 结果函数只接受一个单位列表作为参数。 GHCi中有没有提供types声明的方法? 还是有另一种方法来定义这些不需要types声明的函数? 我没有看到GHCi指南中的明显线索,并尝试使用下列expression式(无效): > let numUniques' = ((length . nub) :: (Eq a) => [a] […]

为什么我不能在另一个函数里面定义一个函数?

这不是一个lambda函数的问题,我知道我可以分配一个lambda到一个variables。 允许我们声明,但不在代码中定义一个函数有什么意义? 例如: #include <iostream> int main() { // This is illegal // int one(int bar) { return 13 + bar; } // This is legal, but why would I want this? int two(int bar); // This gets the job done but man it's complicated class three{ int m_iBar; public: three(int bar):m_iBar(13 + bar){} operator […]

CoffeeScript中的函数声明

我注意到,在CoffeeScript中,如果我使用下面的方法定义一个函数: a = (c) -> c=1 我只能得到函数expression式 : var a; a = function(c) { return c = 1; }; 但是,我个人经常使用函数声明 ,例如: function a(c) { return c = 1; } 我使用第一种forms,但是我想知道在CoffeeScript中是否有方法生成一个函数声明。 如果没有这样的方式,我想知道为什么CoffeeScript避免这样做。 我不认为JSLint会声明一个错误,只要函数声明在范围的顶部。

JavaScript函数声明和评估顺序

为什么这些例子中的第一个不起作用,但所有其他的呢? // 1 – does not work (function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })(); // 2 (function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); // 3 (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); // 4 (function() { setTimeout(function() { someFunction4(); […]

是否有可能在MATLAB中为每个文件定义多个函数,并从该文件外部访问它们?

当我在攻读EE专业的本科学位时,MATLAB需要在自己的文件中定义每个函数,即使它是一行代码。 我正在攻读研究生学位,我必须在MATLAB中编写一个项目。 这仍然是更新版本的MATLAB的要求吗? 如果可以在一个文件中放入多个函数,这个有什么限制吗? 例如,可以从文件外部访问文件中的所有function,还是只能访问与文件名称相同的function? 注意:我正在使用MATLAB版本R2007b。