问题标签 [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.
javascript - 为 JavaScript 函数设置默认参数值
我希望 JavaScript 函数具有我设置默认值的可选参数,如果未定义该值(如果传递该值则忽略该值)。在 Ruby 中,你可以这样做:
这在 JavaScript 中有效吗?
java - Java 是否支持默认参数值?
我遇到了一些具有以下结构的 Java 代码:
我知道在 C++ 中我可以为参数分配默认值。例如:
Java 是否支持这种语法?为什么这两个步骤语法更可取?
python - “Least Astonishment”和可变默认参数
任何修补 Python 时间足够长的人都被以下问题咬伤(或撕成碎片):
Python 新手会期望这个函数总是返回一个只有一个元素的列表:[5]
. 结果却大不相同,而且非常惊人(对于新手来说):
我的一位经理曾经第一次遇到此功能,并称其为该语言的“戏剧性设计缺陷”。我回答说这种行为有一个潜在的解释,如果你不了解内部情况,确实非常令人费解和意外。但是,我无法(对自己)回答以下问题:在函数定义而不是函数执行时绑定默认参数的原因是什么?我怀疑经验丰富的行为是否有实际用途(谁真正在 C 中使用静态变量,没有滋生错误?)
编辑:
Baczek 举了一个有趣的例子。连同您的大部分评论,尤其是 Utaal 的评论,我进一步阐述了:
对我来说,设计决策似乎与将参数范围放在哪里有关:在函数内部,还是与它“一起”?
在函数内部进行绑定意味着在调用x
函数时有效地绑定到指定的默认值,而不是定义,这会带来一个严重的缺陷:def
从绑定的一部分(的函数对象)将在定义时发生,部分(默认参数的分配)在函数调用时发生。
实际行为更加一致:该行的所有内容都在执行该行时进行评估,这意味着在函数定义处。
c - C 默认参数
有没有办法在 C 中为函数指定默认参数?
c++ - C ++中具有默认参数的函数指针
C++ 如何处理与具有默认参数的函数相关的函数指针?
如果我有:
对于哪个函数,我可以使用哪些函数指针?
c# - C# 4 默认参数值:如何分配默认日期时间/对象值?
如果 DateTime 是一个对象,并且默认 C# 参数只能分配编译时常量,那么如何为 DateTime 等对象提供默认值?
我正在尝试使用具有默认值的命名参数来使用构造函数初始化 POCO 中的值。
c# - 这些默认参数的人造模拟之间是否存在显着的机械差异?
C#4.0 通过在方法中允许默认参数引入了一个非常奇特和有用的东西。但是 C#3.0 没有。因此,如果我想模拟“默认参数”,我必须创建两个该方法,一个带有这些参数,一个没有这些参数。我有两种方法可以做到这一点。
版本 A - 调用其他方法
版本 B - 复制方法体
这些之间有什么真正的区别吗?这不是关于优化或资源使用或任何东西的问题(尽管它的一部分是我保持一致的总体目标),我什至认为选择一种方法或另一种方法没有任何显着影响,但我发现它询问这些事情要比错误地假设更明智。
c++ - 有没有办法将参数默认设置为前一个参数的函数?[C++]
我假设不是,但我只是想检查一下 - C++ 中有什么方法可以执行以下操作吗?显然,当我尝试以下操作时,我得到一个关于 bar 的基于范围的错误。
delphi - Delphi 中 TSomething 的默认参数值
我想知道这在 Delphi 中是否可行(或者是否有干净的方法):
GetSomething( x, y )
-> 返回具有这些值的记录。
...然后你有这个函数TSomething
作为参数,你想将它默认为
编译器在这里吐出一个错误,但是我不确定是否有解决方法!
这可以做到吗?
c# - 带默认参数的 DLLImport c++ 函数
我正在尝试将非托管代码 c++ dll 中的函数导入到我的 c# 应用程序中。c ++原型是
如何在 c# 中声明它以利用 param2 的默认性质?以下代码不起作用。param2 用垃圾初始化。