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

c++ - 需要默认参数值的模板函数的首选设计是什么?

我目前正在清理一个充满函数模板的 API,并强烈希望编写以下代码。

当我调用这个模板时,我想这样做如下。

不幸的是,第二次调用无法编译,因为编译器无法推断出可选参数的类型。这是不幸的,因为我真的不在乎参数类型是什么,而是它的值是 NULL。另外,我想避免第三次调用的路线,因为它妨碍了可读性。

这导致我尝试使模板参数V具有默认类型,这也不起作用,因为您不能将默认类型应用于函数模板参数(至少使用 VC++ 9.0)。

我唯一剩下的选择是引入一个doWork对模板参数一无所知的重载V

这是解决这个问题的最佳方法吗?我看到的唯一缺点是,如果函数模板包含许多具有合适默认值的参数,我可能会引入许多琐碎的转发函数。

0 投票
7 回答
598 浏览

c# - C# 不支持手动内联方法有什么原因吗?那么可选参数呢?

是否有任何设计原因(比如他们放弃多继承的原因)?

或者它只是不够重要?

同样的问题适用于方法中的可选参数......这已经在vb.net的第一个版本中......所以肯定不会导致MS不允许可选参数的懒惰,可能是架构决定......而且似乎他们有改变主意,因为 C# 4 将包括那个..

有谁知道这个决定是什么以及他们为什么放弃它?

编辑:

也许你没有完全理解我。我最近正在研究一个计算程序(支持任何大小的数字,直到最后一位),其中某些方法每秒使用数百万次。

Add(1);假设我有一个名为 Add(int num) 的方法,并且该方法经常使用 1 作为参数(而且我的意思不是重载——编写一个名为 AddOne 的新方法,并将 Add 方法复制到其中,除了num我正在编写的不是使用1. 这对你来说可能看起来很奇怪,但实际上速度更快。

(尽管它很丑)

这让我想知道为什么 C# 不支持手动内联,这在这里非常有用。

谢谢。(以及你为什么投票给我:S)

编辑2:

我问自己是否要添加这个。我非常熟悉为此类项目选择 dot net 等平台的怪异(和缺点),但我认为 dot net 优化比您想象的更重要……尤其是 Any CPU 等功能。

0 投票
8 回答
23169 浏览

c# - 我可以为 ASP.NET SOAP Web 服务提供可选参数吗

我想用这个签名构建一个 web 服务,如果 param2 为空,它不会抛出异常。这可能吗?

异常是尝试将空字符串转换为布尔值时引发的 System.ArgumentException。

到目前为止还没有奏效的想法:

  • Web服务不允许方法重载,例如

    /li>

如此处建议:

  • 使bool可空bool?。同样的例外。
  • 操作 WSDL,请参阅此答案

我的问题与这个问题有关,但唯一的答案指向我尚未使用的 WCF 合同。

0 投票
2 回答
5351 浏览

sql - SQL 2008 存储过程中的可选 where 子句/参数?

我正在编写一些更新表格的代码。根据用户想要做什么,它要么更新一大组记录,要么更新一个较小的记录。描述因素是组 ID。

用户可以选择是更新所有记录的表,还是只更新具有该 groupID 的记录。我想对两个实例使用相同的存储过程,其中可能有一些逻辑来区分场景。(我不希望用 90% 相同的代码编写两个存储过程。)

我不是存储过程方面的专家,我不确定是否可以传入可选参数,或者如何根据 groupID 是否存在动态生成 where 子句的一部分。欢迎任何建议。

谢谢!

0 投票
4 回答
11913 浏览

java - java 可选参数

我想在java中编写一个平均方法,以便它可以消耗N个项目,返回它们的平均值:

我的想法是:

如何更改我的方法以使用任意数量的参数而不是 int[] args 以便按照我想要的方式工作?干杯

0 投票
3 回答
10367 浏览

wcf - 向 WCF 操作添加新参数:选择?

在不要求客户端更新其 WSDL 的情况下,处理向现有操作添加新(可选)参数的最佳方式是什么?我不想更新命名空间来描述服务合同的新版本,因为这应该与旧客户端向后兼容。

我应该添加一个带有新参数的新操作,作为重载吗?或者我应该只是将参数添加到现有操作中?

这是我的操作:

应该是:

或者更简单地说,只需将其更改为:

后一种选择似乎最好,根据我的参考书,“对客户端的影响是没有的。新参数在服务处被初始化为默认值。 ”WCF是否将其初始化为所谓的默认值?如果是这样,默认值是多少?

0 投票
2 回答
522 浏览

asp.net - 我如何使用“?” mvc中的运算符?

我有一个 MVC 应用程序,我想使用这个?选项。

请告诉我我该怎么做。我已经写了:

但是,在数据库中插入值时,我该如何使用它?

它给出以下错误:

0 投票
3 回答
17012 浏览

powershell - 互斥powershell参数

设想

  • 我正在使用 Visual Studio 2008 和 .NET 3.5 为 Powershell 2.0 编写一个 cmdlet
  • cmdlet 需要 3 个参数。

我对 cmdlet 的预期语法是这样的:

  • 读作用户必须为“-foo”或“-bar”提供一个值,但不能同时提供两者。

有效输入示例

无效输入示例

我的问题

  • 我的问题是如何在 powershell 中执行此操作,以便它为我完成所有检查 - 或者这是否可能。
  • 我知道我可以只为 foo 和 bar 使用两个可选参数,然后手动进行错误检查。这就是我目前实施的方式。
  • 或者,我对不同方法的建议感兴趣。
0 投票
3 回答
282905 浏览

sql-server-2008 - SQL Server 存储过程中的可选参数?

我在 SQL Server 2008 中编写了一些存储过程,想知道可选输入参数的概念在这里是否可行?

我想我总是可以为我不想使用的参数传入 NULL,检查存储过程中的值,然后从那里取东西,但我很感兴趣,如果这个概念在这里可用。谢谢!

0 投票
2 回答
11364 浏览

php - CodeIgniter 中的可选参数

我正在尝试在 CodeIgniter 控制器中编写一个可以采用可选参数的函数。但是,我总是收到缺少参数的警告。我不是试图抑制警告 - 我试图将参数声明为可选(如果它们不存在,它们可能是空字符串,或其他东西)。

我错过了什么?

谢谢马拉
_