有没有办法在 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 的官方文档中找不到有关此事的任何信息。
当您不在 中指定可选参数值时,是否可以使 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
下面的示例可选参数必须按顺序给出;因此 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)
但这并没有真正解决我们指定函数的顺序。
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
我想用可选参数测试函数调用.
这是我的代码:
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.
我相信应该有更好的方法来测试这个.
实现中间参数是可选的但最后一个参数是必需的 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)
但看起来很笨拙。有一个更好的方法吗?
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)
为什么会这样?
任何特殊原因?
我需要在“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)
有什么方法可以使复杂类型成为可选参数吗?如何忽略动作过滤器中的复杂类型可选参数?
我是 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]?
注意:
我想写这样的东西。
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)
arguments ×3
function ×3
python ×3
c# ×2
android ×1
args ×1
ecmascript-6 ×1
enums ×1
go ×1
javascript ×1
kotlin ×1
matlab ×1
pytest ×1
python-3.x ×1
type-hinting ×1
unit-testing ×1
validation ×1
vba ×1
xunit ×1