问题标签 [default-parameters]

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 投票
29 回答
1375725 浏览

javascript - 为 JavaScript 函数设置默认参数值

我希望 JavaScript 函数具有我设置默认值的可选参数,如果未定义该值(如果传递该值则忽略该值)。在 Ruby 中,你可以这样做:

这在 JavaScript 中有效吗?

0 投票
26 回答
1622488 浏览

java - Java 是否支持默认参数值?

我遇到了一些具有以下结构的 Java 代码:

我知道在 C++ 中我可以为参数分配默认值。例如:

Java 是否支持这种语法?为什么这两个步骤语法更可取?

0 投票
31 回答
208836 浏览

python - “Least Astonishment”和可变默认参数

任何修补 Python 时间足够长的人都被以下问题咬伤(或撕成碎片):

Python 新手会期望这个函数总是返回一个只有一个元素的列表:[5]. 结果却大不相同,而且非常惊人(对于新手来说):

我的一位经理曾经第一次遇到此功能,并称其为该语言的“戏剧性设计缺陷”。我回答说这种行为有一个潜在的解释,如果你不了解内部情况,确实非常令人费解和意外。但是,我无法(对自己)回答以下问题:在函数定义而不是函数执行时绑定默认参数的原因是什么?我怀疑经验丰富的行为是否有实际用途(谁真正在 C 中使用静态变量,没有滋生错误?)

编辑

Baczek 举了一个有趣的例子。连同您的大部分评论,尤其是 Utaal 的评论,我进一步阐述了:

对我来说,设计决策似乎与将参数范围放在哪里有关:在函数内部,还是与它“一起”?

在函数内部进行绑定意味着在调用x函数时有效地绑定到指定的默认值,而不是定义,这会带来一个严重的缺陷:def从绑定的一部分(的函数对象)将在定义时发生,部分(默认参数的分配)在函数调用时发生。

实际行为更加一致:该行的所有内容都在执行该行时进行评估,这意味着在函数定义处。

0 投票
22 回答
254884 浏览

c - C 默认参数

有没有办法在 C 中为函数指定默认参数?

0 投票
2 回答
6257 浏览

c++ - C ++中具有默认参数的函数指针

C++ 如何处理与具有默认参数的函数相关的函数指针?

如果我有:

对于哪个函数,我可以使用哪些函数指针?

0 投票
6 回答
95037 浏览

c# - C# 4 默认参数值:如何分配默认日期时间/对象值?

如果 DateTime 是一个对象,并且默认 C# 参数只能分配编译时常量,那么如何为 DateTime 等对象提供默认值?

我正在尝试使用具有默认值的命名参数来使用构造函数初始化 POCO 中的值。

0 投票
3 回答
71 浏览

c# - 这些默认参数的人造模拟之间是否存在显着的机械差异?

C#4.0 通过在方法中允许默认参数引入了一个非常奇特和有用的东西。但是 C#3.0 没有。因此,如果我想模拟“默认参数”,我必须创建两个该方法,一个带有这些参数,一个没有这些参数。我有两种方法可以做到这一点。

版本 A - 调用其他方法

版本 B - 复制方法体

这些之间有什么真正的区别吗?这不是关于优化或资源使用或任何东西的问题(尽管它的一部分是我保持一致的总体目标),我什至认为选择一种方法或另一种方法没有任何显着影响,但我发现它询问这些事情要比错误地假设更明智。

0 投票
1 回答
102 浏览

c++ - 有没有办法将参数默认设置为前一个参数的函数?[C++]

我假设不是,但我只是想检查一下 - C++ 中有什么方法可以执行以下操作吗?显然,当我尝试以下操作时,我得到一个关于 bar 的基于范围的错误。

0 投票
4 回答
3406 浏览

delphi - Delphi 中 TSomething 的默认参数值

我想知道这在 Delphi 中是否可行(或者是否有干净的方法):

GetSomething( x, y )-> 返回具有这些值的记录。

...然后你有这个函数TSomething作为参数,你想将它默认为

编译器在这里吐出一个错误,但是我不确定是否有解决方法!

这可以做到吗?

0 投票
2 回答
2613 浏览

c# - 带默认参数的 DLLImport c++ 函数

我正在尝试将非托管代码 c++ dll 中的函数导入到我的 c# 应用程序中。c ++原型是

如何在 c# 中声明它以利用 param2 的默认性质?以下代码不起作用。param2 用垃圾初始化。