问题标签 [default-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 投票
3 回答
222 浏览

python - 将列表作为默认函数参数的奇怪行为

可能重复:
Python 中的“Least Astonishment”:可变默认参数
列表扩展了奇怪的行为
Pyramid traversal view lookup using method names

假设我有这个功能:

调用它会产生以下结果:

当我更改b += [1]b = b + [1]时,函数的行为会发生变化:

与有何b = b + [1]不同?b += [1]为什么会这样?

0 投票
4 回答
13195 浏览

c++ - 如果 C++11 的 lambda 表达式支持默认参数怎么办?

我认为以下代码非常方便且无害:

为什么 C++11 明确禁止 lambda 表达式的默认参数?

我只是想知道背后的理由和考虑。

我想知道 C++11 标准所说的“为什么”而不是“什么”。

0 投票
2 回答
7861 浏览

c++ - C ++中的函数重载与默认参数

嗨,我有一个困惑或说更多我需要了解一些东西。我有一个过程和另一个相同的重载过程。

c如果我将重载函数作为默认参数,是否有可能不是有两个重载函数。因此,即使有人只传递了两个参数,我也可以只有一个函数来处理这种情况。

但我主要关心的是第三个论点,即当前const char* c. 因此,如果我做到这一点const char* c = "string",是否是正确的方法来处理使用具有默认参数的一个函数删除重载的情况。

我在这里看到了这篇文章,但这似乎专注于编译而不是我的困惑。

0 投票
3 回答
329 浏览

c++ - 模板参数默认为后面的

这个链接没有回答我的问题,所以我会在这里问:

基本上我想写一个模板函数

这里我总是需要Out在调用时指定f。我不想每次都这样做,所以我基本上想要

这意味着如果我不指定Out,它将默认为In。但是,这在 C++11 中是不可能的。

所以我的问题是,有什么办法可以达到效果:

  1. 调用f(t)将实例化f<T,T>(t)或更一般地f<typename SomeThing<T>::type, T>
  2. 调用f<U>(t)将实例化f<U, T>(t)
0 投票
2 回答
92 浏览

c++ - 虚函数中的默认参数

请帮我找出背后的原因:

虽然它正在调用 B::fun(),但仍然打印 5,为什么以及如何工作。?

0 投票
2 回答
804 浏览

c++ - 成员函数模板参数默认值

以下代码在 GCC 4.5.3 中编译,但在 VS 2008 和 2010 中无法编译。这是由于 VS 编译器错误还是标准禁止提供默认函数模板参数值?

错误信息

0 投票
1 回答
166 浏览

php - 默认参数值覆盖提供的参数?

我在 PHP 中有一个函数,它的一些参数默认为null,因此我可以轻松地用少于全部数量的参数来调用它。问题是,当我直接使用空默认参数时,我得到了给定的参数,但是当我尝试将该值复制到另一个变量时,该变量仅获得null. 它看起来像这样:

我从另一个脚本中调用这样的函数:(这是一个处理卡车和汽车的虚拟脚本。)

我的bind()函数是 MySQLIbind_param()bind_result()函数的包装器。我只包括了前几行,因为它在那个时候已经失败了,甚至在它到达实际逻辑之前。

现在,它看起来只是 PHP 中的一个错误,因为这不符合我所知道的关于变量、参数、默认参数和引用如何工作的知识。此外,这个问题似乎只出现在我的真实代码中,并没有出现在我编写的用于测试它的简单 php 文件中。

更多信息:

$foo被赋值NULL,when$arg2是一个空字符串,""当它是一个非空字符串时被正确赋值。空字符串仍然是有效字符串,那么 PHP 为什么要这样做呢?

0 投票
1 回答
2513 浏览

c++ - Lambda 函数作为构造函数中 std::function 的默认参数

我想在类的构造函数中为仿函数参数设置一个默认仿函数。作为一个最小的例子,我想出了一个应该作为过滤器服务的类,如果过滤T器函数返回 true,它会过滤 i 类型的元素。过滤器函数应该在构造函数中提供,默认为“全部接受”过滤器函数:

我实例化模板类,如下所示:

但是,gcc 4.7 似乎不喜欢这段代码

怎么了?我的代码标准是否符合(所以 GCC 在这里真的有问题或者没有实现这个)还是我做错了什么?

作为一种解决方法,我目前使用默认构造std::function,并且只有在设置时才调用它(我想调用它的地方):

0 投票
2 回答
10244 浏览

c++ - C++ 默认参数 - 声明

我在课堂上创建了一个函数。我将所有声明放在头文件中,将所有定义放在 .cpp 中。

在我的标题中:

在我的.cpp中:

每当我尝试编译和运行它时,都会出现两个错误。

错误:为 'std::string FileReader::trim(std::string, char)' [-fpermissive] 的参数 2 给出了默认参数

错误:在 'std::string FileReader::trim(std::string, char)' [-fpermissive] 中的先前规范之后

我究竟做错了什么?我只希望我的函数有这个默认参数。

0 投票
0 回答
261 浏览

c++ - 默认 valarray 传递不起作用

在 C++ 中,我有两个功能:

调用 do_work(args) 和调用 wrapper(args) 给出不同的结果。前者工作正常;后者在 do_work 函数的某处崩溃,我不知道为什么(代码非常复杂)。为什么会这样?如果我在包装器内部的函数调用中省略“arr”参数:

然后 wrapper(args) 工作正常!有谁知道发生了什么?我不知道从哪里开始寻找。