标签: optional-arguments

可选参数?

有没有办法在 Go 编程语言中将参数声明为“可选”?

我的意思的例子:

func doSomething(foo string, bar int) bool {
    //...
}
Run Code Online (Sandbox Code Playgroud)

我希望该参数bar是可选的,并且0如果没有传递任何内容,则默认为该参数。

doSomething("foo")
Run Code Online (Sandbox Code Playgroud)

会是一样的

doSomething("foo",0)
Run Code Online (Sandbox Code Playgroud)

我在有关 Functions 的官方文档中找不到有关此事的任何信息。

function go optional-arguments

5
推荐指数
1
解决办法
896
查看次数

xUnit 测试引擎的 InlineDataAttribute + 可选方法参数

当您不在 中指定可选参数值时,是否可以使 xUnit 测试工作InlineDataAttribute

例子:

[Theory]
[InlineData(1, true)] // works
[InlineData(2)]       // error
void Test(int num, bool fast=true){}
Run Code Online (Sandbox Code Playgroud)

c# unit-testing xunit optional-parameters optional-arguments

5
推荐指数
1
解决办法
1995
查看次数

如何在函数中指定多个可选参数而不考虑它们的给出顺序

下面的示例可选参数必须按顺序给出;因此 ShowHeaders 必须先于 ValueAdd 等等。如果我想指定 ValueAdd,我*必须*指定 ShowHeaders:

Function Example(Value1, Optional ShowHeaders = "Headers=N", Optional ValueAdd = "Sprd=0")
Run Code Online (Sandbox Code Playgroud)

我希望能够指定一个或多个(相对)较大的可选参数列表:1)但不按顺序,2)不一定是全部。

对于1)我在想,也许可以制作一个通用的参数列表,例如而不是上面的:

Function Example(Value1, Optional Arg1, Optional Arg2)
Run Code Online (Sandbox Code Playgroud)

然后检查 Arg1 最左边的部分是否=“Headers=”或“Sprd=”等,然后对 Arg2 执行相同的操作。这很好,但似乎效率不是很高,我计划创建具有 > 10 个可选参数的 UDF。上面的解决方案也可以解决2),但我只是觉得它的编码不太好。

对于2)我知道我们可以使用

If IsMissing(Arg) Then
Run Code Online (Sandbox Code Playgroud)

但这并没有真正解决我们指定函数的顺序。

vba arguments user-defined-functions optional-arguments

5
推荐指数
1
解决办法
7454
查看次数

How do I use MATLAB's inputParser with optional string inputs? The documentation says "use a validation function" but it's unclear how to do that

I have a MATLAB file that contains a single top-level function, called sandbox. That function in turn contains two nested functions, mysum and myprod, which are identical in functionality and what parameters they allow except that one uses @sum internally and the other uses @prod internally. My goal is to create a wrapper function to use in both mysum and myprod that takes care of all the validation and input parsing. This function is called applyFunc.

Here's …

validation matlab function optional-arguments input-parameters

5
推荐指数
1
解决办法
5019
查看次数

如何使用可选参数为函数编写测试

我想用可选参数测试函数调用.

这是我的代码:

list_get()
list_get(key, "city", 0)
list_get(key, 'contact_no', 2, {}, policy)
list_get(key, "contact_no", 0)
list_get(key, "contact_no", 1, {}, policy, "")
list_get(key, "contact_no", 0, 888)
Run Code Online (Sandbox Code Playgroud)

由于可选参数,我无法对其进行参数化,因此我为每个api调用编写了单独的测试函数pytest.
我相信应该有更好的方法来测试这个.

python optional-parameters optional-arguments pytest

5
推荐指数
1
解决办法
789
查看次数

使中间参数可选的惯用方法

实现中间参数是可选的但最后一个参数是必需的 JavaScript 函数的常见方法是什么?首选惯用的 ES2015 解决方案。

例如,我经常看到可以通过多种方式调用的函数,如下所示:

func(firstArg, callback);
func(firstArg, options, callback);
Run Code Online (Sandbox Code Playgroud)

所以实际发生的是参数的数量影响每个参数的解释。

我知道我可以通过检查参数的长度来处理这个问题,如下所示:

//     func(firstArg, options, callback);
// or: func(firstArg, callback);
function (firstArg, ...args) {
    let options = {};
    if (args.length > 1) {
        options = args.shift();
    }
    let callback = args[0];
    // And do stuff ...
}
Run Code Online (Sandbox Code Playgroud)

但看起来很笨拙。有一个更好的方法吗?

javascript arguments optional-arguments ecmascript-6

5
推荐指数
1
解决办法
2287
查看次数

Python 3.5 TypeError:为参数获取了多个值

def f(a, b, *args):
    return (a, b, args)

f(a=3, b=5)  
(3, 5, ())
Run Code Online (Sandbox Code Playgroud)

然而:

f(a=3, b=5, *[1,2,3])  
TypeError: got multiple values for argument 'b'
Run Code Online (Sandbox Code Playgroud)

为什么会这样?
任何特殊原因?

python args optional-arguments python-3.x

5
推荐指数
1
解决办法
1980
查看次数

复杂类型作为 Web api 操作中的可选参数

我需要在“Web API 控制器操作”中将复杂类型参数设置为可选,以便空值的操作过滤器可以通过检查参数的 property 来忽略它IsOptional。我收到此错误:

“FormatterParameterBinding”不支持可选参数“errorCode”。

我有一个这样的控制器:

[Route("api/v1/Temp/{number}/{errorCode?}/{value?}")]
[HttpGet]
public IHttpActionResult Temp(int number, ErrorDetail errorCode = null, string value = null)
{
    return Ok("good");
}
Run Code Online (Sandbox Code Playgroud)

并让 actionFilter 检查空值,如下所示:

public override void OnActionExecuting(HttpActionContext actionContext)
{
    var parameters = actionContext.ActionDescriptor.GetParameters();
    foreach (var param in parameters)
    {
        if (param.IsOptional)
            continue;

        object value = null;

        if (actionContext.ActionArguments.ContainsKey(param.ParameterName))
            value = actionContext.ActionArguments[param.ParameterName];

        if (value == null)
            throw new GasException((ulong)ErrorCodes.NullValue, ErrorCodes.NullValue.GetDescription());
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使复杂类型成为可选参数吗?如何忽略动作过滤器中的复杂类型可选参数?

c# optional-arguments asp.net-web-api2

5
推荐指数
1
解决办法
3064
查看次数

如何在 Kotlin 的枚举中检索使用 vararg 声明的参数的值

我是 Kotlin 的新手,我有一个包含许多值的枚举,这些值指的是我的应用程序具有的不同状态。

现在我需要在应用程序进入状态时记录一些东西,但枚举中的某些状态可以记录不止一件事(基于来自应用程序外部的其他参数),而某些状态不需要记录某些东西。

这是我的枚举:

enum class StateName(vararg log: String) {
    FIRST_CONNECTION(), // no parameter here
    AUTHORIZATION_CHECK("message 1", "message 2"),
    HANDSHAKE_SUCCESS("message")
    //...
}
Run Code Online (Sandbox Code Playgroud)

如果使用单个强制参数声明了枚举,StateName(var log: String)我可以用来HANDSHAKE_SUCCESS.log检索其值,但使用varargIDE(android studio)根本找不到log

那么我怎样才能用类似的东西检索我的字符串log[0]

注意

  • 我的枚举已经定义(没有参数)并在我的应用程序中使用,我不能使用不同的方法来更改实际状态/添加日志记录功能
  • 即使我刚刚开始学习,我也需要使用 Kotlin,因为该项目是用这种语言编写的,所以我只想知道我是否(以及如何)能做到这一点。

enums android optional-arguments kotlin

5
推荐指数
1
解决办法
662
查看次数

我可以在 python 中定义函数参数的默认值和数据类型吗?

我想写这样的东西。

1) def func_name(arg1, arg2, arg3 = 3) #这定义了可选参数arg3的默认值

2) def func_name(arg1, arg2, arg3: int) #这定义了所需参数 arg3 的数据类型

有没有可能的方法来定义它们两者?像这样的东西

def func_name(arg1, arg2, arg3 = 3: int)

python arguments function type-hinting optional-arguments

5
推荐指数
1
解决办法
1万
查看次数