2015-10-25 37 views
-1

最后一行,为什么不会是:关于Swift语言中的类“func”的一些问题?

greet(name: "Bob", day: "Tuesday") 

任何人有一些想法?

func greet(name: String, day: String) -> String { 
    return "Hello \(name), today is \(day)." 
} 

greet("Bob", day: "Tuesday") 
+0

只是声明是这样的:FUNC迎接(名称名称:字符串,天:字符串) - >字符串{ –

回答

2

“默认情况下,第一个参数忽略了它的外部名,第二次及以后的参数使用其本地的名字作为对外的名字。”

摘自:苹果公司“雨燕编程语言(Swift 2.0)。“,部分函数参数名称

Apple建议使代码简洁易读。通常,函数名称包含一个指示第一个参数的内容。但是,如果您确实想强制使用外部参数名称,请像这样指定外部和本地参数标签。

func greet(name name: String, day: String) -> String { 
    return "Hello \(name), today is \(day)." 
} 

enter image description here

+0

他们这样做的原因,这种方式是因为它很自然地映射到Objective-C的命名约定。 – Thilo

0

在函数每个参数有两个名字,在外人名称和内幕名称。

局外人的名字是当你的函数被调用时使用的名字。 内部人员名称是您可以在您的功能中调用的名称。

您的功能:

func greet(name: String, day: String) -> String { 
    return "Hello \(name), today is \(day)." 
} 

可以这样调用:

greet("Bob", day: "Tuesday") 

你并不需要把外面的名字第一个参数,因为雨燕是没有必要的。同时,有必要把它的其他参数(而不是第一个)

你能迫使你的函数与外部名称参数调用,即使像这样的第一个参数:

func greet(name: String, day: String) -> String { 
     return "Hello \(name), today is \(day)." 
    } 

然后你的电话是:

greet(name: "Bob", day: "Tuesday") 

又如:

func testtest(outside1 inside1: String, outside2 inside2: String) { 
    print("inside1 = \(inside1)") // okay 
    print("inside2 = \(inside2)") // okay 
    print("outside1 = \(outside1)") // ERROR outside1 doesn't exist 
} 

你可以这样调用:

testtest(outside1: "wow", outside2: "meoao")