问题标签 [optional-arguments]

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 投票
1 回答
37 浏览

vb.net - 有没有办法使用作为 VB.NET 中函数调用结果的默认参数?

我有一大堆假设特定连接字符串的数据库访问函数。在我的应用程序中,我调用

GetTableItems()我里面有类似的东西

所以连接字符串在代码中的一个地方,我调用一个方法来获取它。

我现在遇到的是我想重用相同的数据库函数,但使用不同的连接字符串。我可以DB_MyTable.GetTableItems()轻松地重写所有函数,因为它们是从脚本生成的,但是在主应用程序代码中,我需要处理现在需要知道我想使用什么连接字符串的每个函数调用。

我尝试将参数更改为GetTableItems()这样:

希望能够在默认情况下传入我已经在大多数代码中使用的字符串,但是我收到一个错误,说默认值必须是一个常量表达式。这意味着在任何地方都添加一个特定的连接字符串,这是我不想做的。

有没有办法完成我所追求的,或者我需要使连接字符串成为必需的参数并更改我的应用程序中的所有调用以匹配新签名?

一如既往的感谢!

0 投票
3 回答
1448 浏览

c++ - 我可以在调用者处将函数参数默认为 __FILE__ 的值吗?

在 C++ 中,我可以为函数提供一个默认参数,该参数默认为__PRETTY_FUNCTION___, ___FILE___, 和___LINE__在调用者处定义的点,而不是在不使用宏的情况下在头文件中提供默认值的点?

0 投票
8 回答
202208 浏览

c++ - 如何将可选参数传递给 C++ 中的方法?

如何将可选参数传递给 C++ 中的方法?任何代码片段...

0 投票
0 回答
62 浏览

python - 为什么这个可选方法参数在不同的 python 对象之间共享?

可能的重复:
Python 中的“Least Astonishment”:可变默认参数

谁能给我解释一下?

mutate() 在没有可选参数的情况下被调用。那么x不应该总是[]吗?让我感到困惑的是 x 的值也在不同的对象之间共享......

0 投票
4 回答
3472 浏览

function - 有没有办法在 R 的函数中使用两个“...”语句?

我想编写一个同时调用plot()and的函数,legend()如果用户可以指定许多附加参数,然后将这些参数传递给plot()or 或,那将是理想的legend()。我知道我可以使用以下两个功能之一来实现这一点...

这传递xaxt = "n"给情节。但是有没有一种方法可以在不预先指定函数头中的参数的情况下传递title = "legend"给调用?legend()


接受答案的更新:我认为 VitoshKa 的方式是完成我想要的最优雅的方式。但是,我必须解决一些小问题,直到它按我的意愿工作。

起初,我检查了我要传递哪些参数legend以及要传递哪些参数plot。为此的第一步是查看哪些参数legend是唯一的,legend而不是情节和/或标准的一部分:

dput()在这里使用,因为这条线plot.args <- c(names(formals(plot.default)), names(par()))总是调用一个我不想要的新空图。所以,我dput在下面的函数中使用了输出。

接下来,我必须处理重叠的参数(通过 获取它们dput(largs.all[(largs.all %in% pargs.all)]))。对于一些人来说这是微不足道的(例如,,x),y其他人则被传递给两个函数(例如,pch)。但是,在我的实际应用程序中,我什至使用了其他策略(例如,不同的变量名称用于adj,但未在此示例中实现)。

最后,do.call必须以两种方式更改该功能。首先,what 部分(即,称为函数)需要是一个字符(即,'plot'而不是plot)。并且参数列表的构造必须略有不同。

在此示例中,pch传递给两者plotlegendtitle仅传递给legend,并且ylim仅传递给plot


根据 Gavin Simpson 的评论更新 2(另请参阅 Vitoshka 的回答中的评论):(
i)这是正确的。
(ii) 它总是可以是一个字符。但是如果你有一个与函数同名的变量,那么你需要在中引用函数名do.call

(iii)您可以使用c(x = 1, y = 1, list())并且效果很好。但是,我真正所做的(不是在我给出的示例中,而是在我的实际函数中)如下:c(x = 1, y = 1, xlim = c(0, 2), list(bla='foo'))
请将其与以下情况进行比较:c(list(x = 1, y = 1, xlim = c(0, 2)), list(bla='foo'))
在第一种情况下,列表包含两个元素和xlim(每个都是标量),在后一种情况下该列表只有(这是长度为 2 的向量,这是我想要的)。xlim1xlim2xlim

所以,对于我的例子,你的所有观点都是正确的。但是,对于我的实际功能(有更多变量),我遇到了这些问题,并想在这里记录它们。抱歉不准确。

0 投票
1 回答
243 浏览

actionscript-3 - AS3:测试可选参数和组合

我正在重新审视一些过滤 XML 的旧代码,但这可以很容易地应用于方法的参数(我使用它的方式,本质上是这样)。这是一个问题,我觉得我遇到了很多并且不知道解决这个问题的好方法。

所以问题是我有3个论点。它们都是可选的。我想看看哪些是存在的,并测试它们的值是否基于哪些存在(根据可能性排序):

我觉得必须有一种更短的方法来写这个,并以当前的形式重复如此多的内容。有人可以建议一种更清洁、更有效的方式来编写这个吗?

谢谢你的想法。

编辑: if 语句顺序错误。改变了那个。

这可以概括。为了清楚起见,我只是包括我的代码。如果一般问题仍然不清楚,我的印象是:

测试所有可选参数组合的最干净/最有效的方法是什么?

0 投票
2 回答
718 浏览

python - 访问装饰器包装函数内的装饰器参数

我试图在没有运气的情况下访问包装函数内的装饰器参数。

我所拥有的是:

我会像普通装饰器一样使用它

我真的不明白为什么我不能访问装饰器参数。

0 投票
1 回答
409 浏览

python - Python optparse 中的有序选项

首先,我知道 optparse 自 2.7 版以来已被弃用,但我正在工作的机器上只有 Python 2.3 可用。

问题是如何知道在命令行中给出选项的顺序,例如:

将首先执行选项 f 然后执行选项 b 和

会适得其反。

我在阅读文档后想出的唯一解决方案optargs是使用callback操作来存储选项检测相对于其他选项的位置,因为options对象似乎没有遵循任何特定的顺序。

你知道这个问题的另一个(也许更好的)解决方案吗?

0 投票
6 回答
2754 浏览

python - 将传递分配给Python中的函数

我有一段代码定义了一个将函数作为参数的函数,如下所示:

现在,我想提供一些 f 的默认值,它什么都不做。所以我想我会使用通行证,如下所示:

但这不会编译。我应该怎么做?

0 投票
4 回答
1243 浏览

python - python函数中可选参数的命名实践

是否可以在 python 函数中为可选参数提供与外部变量相同的名称?它似乎工作正常,因为下面定义的函数 f 和 g 给出了相同的输出。但是,这是否被认为是不好的做法,在某些情况下会失败吗?