问题标签 [function-parameter]

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 投票
6 回答
1198 浏览

php - 有很多参数的函数是不好的形式吗?有什么选择?

我有一个查询数据库的搜索功能,并且有大约 15 个可选参数。显然这并不漂亮,称它为有点乱。PHP 不允许重载方法,所以我一直在创建巨大的函数签名。

在其他地方,我看到了诸如创建参数类之类的建议:使用大量参数的缺点

但这似乎太重了。我可以传入一个关联数组,但是虽然这减少了参数的数量,但我相信它不太容易遵循,因为没有内置文档说明数组中应该存在哪些键。

有没有其他方法可以优雅地处理这个问题?通常在其他语言中,我会有一个非常丑陋的private方法,它最多需要十几个参数,然后创建public同名的方法,这些方法接受这些参数的子集并在内部调用私有方法。

0 投票
4 回答
196161 浏览

python - Python - 使用列表作为函数参数

如何使用 Python 列表(例如params = ['a',3.4,None])作为函数的参数,例如:

0 投票
3 回答
3330 浏览

c - 将字符串作为参数传递 - 在函数中获取段错误

已解决请参阅问题底部的解决方案。

我无法将字符串参数传递给我的函数,并且在调用函数时遇到分段错误。该程序接受命令行输入并在验证后将提供给函数的文件传递给该函数。

我的功能代码是这样的:

调用该函数时,会抛出一个段错误,并且inputFile的值为0x00000000,在函数调用之前,它有一个内存位置和测试文件路径的值。

我尝试过的一些变体,具有匹配的函数原型:

我也改变了变量。

为什么调试器中具有有效内存地址和值的变量在用作参数时会突然擦除?

编辑1:

在这里结合建议,我删除了该inputFile= argv[2]行,调试器显示该strcpy功能正常工作。

但是,我都尝试过compress(char *inputFile)每个 Edwin Buck 和compress(argv[2])每个 unwind,这两种更改仍然会导致Cannot access memory at address 0xBEB9C74C

奇怪的是我的文件验证功能checkFile(char inputFile[])适用于inputFile值,但是当我将相同的参数传递给compress(char inputFile[])函数时,我得到了段错误。

编辑 2- 已解决

当你难倒你的教授 45 分钟时,你就知道发生了什么事。事实证明,我在 compress() 方法中将文件读取缓冲区声明为一个 5MB 长的数组,这反过来又最大化了堆栈帧。将缓冲区声明更改为全局变量就可以了,代码就会执行。

谢谢您的帮助!

0 投票
4 回答
19799 浏览

c - 为什么要在函数头中声明 C 数组参数的大小?

谁能告诉我为什么我应该费心在函数头中指定 C 数组参数的大小?例如:

和:

我们得到一个有用的错误。也许它有助于评论/文档?

0 投票
2 回答
2682 浏览

php - 如何将带有几个逗号分隔值的字符串作为函数参数传递

例如:

我希望效果是这样的:

0 投票
1 回答
265 浏览

javascript - 在 Tempo (JavaScript/JSON) 中使用 {{field}} 作为参数

是否可以使用 {{field}} 作为使用Tempo的 javascript 函数的参数?

就像是,

0 投票
2 回答
279 浏览

c++ - 类作为函数 c++ 的参数

我将一堆加密算法编写为类,现在我想实现加密模式(维基百科中显示的通用模式,而不是算法规范中的特定模式)。我将如何编写一个可以接受任何类的函数?

编辑:

这就是我想要完成的

0 投票
6 回答
2871 浏览

c# - C# 是否可以将 orderby LINQ 子句抽象为函数参数?

我有一个绑定到 WPF 列表视图的 ObservableCollection。我希望能够通过单击列标题对 ListView 控件的列进行排序。为此,我对 ObservableCollection 进行排序并让绑定负责更新 GUI。

要对 ObservableCollection 进行排序,我使用以下代码:

注意:数据绑定到 ListView

我遇到的问题是,对于每一列,都会有很多复制粘贴代码来达到预期的效果。是否可以将 LINQ 语句的“orderby x.ID 降序”部分作为函数参数传递?

或者有没有更简单的方法来达到预期的结果?

0 投票
5 回答
108877 浏览

c++ - c++0x:通过引用接收 lambda 作为参数的正确方法

int->int定义通过引用接收 lambda 参数的函数的正确方法是什么?

或者

我不确定最后一种形式是否合法。

还有其他方法来定义 lambda 参数吗?

0 投票
1 回答
433 浏览

python - 将局部变量设置为函数而不是使用全局变量来优化函数

在 itertools 模块的文档中,我发现了这条评论

请注意,可以通过将全局查找替换为定义为默认值的局部变量来优化上述许多方法。例如,点积配方可以写成:

如何?。
是否有实际的明显加速(可以平衡较大函数签名的不便)?
如图所示,在哪些特定条件下使用局部变量是相关的?

编辑:我用 timeit 进行了测试,并且有任何相关的差异。
对于两个 40 项列表作为 vec1、vec2:

全局查找-> 3.22720959404
本地查找-> 3.19884065683

也就是说,只有大约。1% 的收益。