当我将firstThing(第一件事)设置为default(默认值)时,如果没有默认值nil(默认值),这将起作用,我会得到一个错误,即调用函数时缺少参数。
通过键入Int 我认为它使它成为可选的,默认值为零,对吗?如果是这样,为什么没有=nil它就不能工作?
func test(firstThing: Int? = nil) {
if firstThing != nil {
print(firstThing!)
}
print("done")
}
test()
Swift不像JavaScript这样的语言,您可以在不传递参数的情况下调用函数,它仍然会被调用。因此,要在Swift中调用函数,您需要为其参数赋值。
参数的默认值允许您在调用函数时分配一个值而无需指定它。这就是为什么test()
在test的声明中指定默认值时有效。
如果未包含该默认值,则需要在调用中提供值:测试(nil)
。
此外,与此问题没有直接关系,但可能值得注意的是,您正在使用“C”方式处理可能为空的指针,以处理Swift中可能为零的选项。以下代码更安全(特别是在多线程软件中),它允许您避免强制展开可选的:
func test(firstThing: Int? = nil) {
if let firstThing = firstThing {
print(firstThing)
}
print("done")
}
test()
默认参数允许您在不传递参数的情况下调用函数。如果不传递参数,则会提供默认参数。所以使用你的代码,这。。。
test()
...与此完全相同:
test(nil)
如果像这样省略默认参数。。。
func test(firstThing: Int?) {
if firstThing != nil {
print(firstThing!)
}
print("done")
}
...那你就不能再这样了...
test()
如果这样做,您将得到您描述的“缺少参数”错误。您每次都必须传递一个参数,即使该参数只是nil
:
test(nil) // this works
选项和默认参数是两件不同的事情。
一个可选的变量可以是nil,就是这样。
默认参数在忽略该参数时使用默认值,该默认值的指定方式如下:func test(param:Int=0)
如果指定的参数是可选的,则必须提供该参数,即使要传递的值是nil。如果您的函数看起来像这样的函数测试(参数:Int?) ,不能这样调用它。尽管参数是可选的,但它没有默认值。
您还可以将这两者结合起来,使用一个可选参数,其中默认值为nil,如下所示:
func test(param:Int?=nil)
。
问题内容: 是否可以为可选的通用参数提供默认值? 我正在尝试做这样的事情: 但我说错了 这只是我试图做的不可能的事吗? 问题答案: 用您完成的方式是不可能的。仅考虑上述代码,什么是类型?就像它说的那样,编译器无法弄清楚(我也不能,因为数据不存在,我也不能。) 特定问题的解决方案是重载而不是使用默认值: 但这引发了您在这里做什么的问题。您会认为应该如此。否则,您在做什么?如果不诉诸(您应该强烈避免)
问题内容: 当读取a的初始化程序时,我看到一些参数默认为value 。什么是关键词代表什么? 问题答案: 这不是有效的Swift代码,它是即时生成的。 在这里意味着有一些默认值,但发电机不能想像它适合你才能看到它。从技术上来说,默认值是一个内联函数,因此不能轻易将其转换为简单的声明。 您可以看到类似的声明 其中默认为(在Swift 1.x中)和默认为(在Swift 1.x中)。 在的情况下,默认值
在 C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。也就是说,调用函数时可以省略有默认值的参数。如果用户指定了参数的值,那么就使用用户指定的值,否则使用参数的默认值。 所谓默认参数,指的是当函数调用中省略了实参时自动使用的一个值,这个值就是给形参指定的默认值。下面是一个简单的示例: 运行结果: 10, 3.5, # 2
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。 注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的——这会在后面的章节中做详细解释。从现在开始,请记住这一点。 使用默认参数值 例7.5 使用默认参数值 #!
问题内容: 在python中,我可以定义一个函数,如下所示: 在这种情况下,我可以将func称为: 我还可以将函数定义为: 可以称为 最后,我可以结合两种形式 但是,不起作用的是调用: 我最初的想法是,这可能是因为一个函数 可以称为 因此,这将在将3打包到args还是kwargs中引入一些歧义。但是,在python 3中,可以指定仅关键字参数: 这样看来,在以下方面似乎没有语法歧义: 但是,这仍然
Scala 函数 Scala 可以为函数参数指定默认参数值,使用了默认参数,你在调用函数的过程中可以不需要传递参数,这时函数就会调用它的默认参数值,如果传递了参数,则传递值会取代默认值。实例如下: object Test { def main(args: Array[String]) { println( "返回值 : " + addInt() ); } def