快速语言中’#’标记的含义是什么?

前端之家收集整理的这篇文章主要介绍了快速语言中’#’标记的含义是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到这样的代码
func hello(name: String,#helloMessage: String) -> String { 
    return "\(helloMessage),\(name)." 
}

我的问题是#标记在参数名称之前是什么意思?这是否意味着在调用函数时必须指定参数?

此外,任何人都可以告诉我与功能的区别没有这个#标记代码示例是非常受欢迎的.

更新(Swift 3.0)

第一个参数的签名的默认行为发生了巨大变化.要了解参数标签(例如“外部参数”)和参数名称(例如“本地参数”)的工作原理,请阅读Apple的“Swift”书中的“功能参数标签和参数名称”一章.

一些例子:

func someFunction(parameterName: Int) { parameterName }
someFunction(parameterName: 5) // argument label not specified

func someFunction(argumentLabel parameterName: Int) { parameterName }
someFunction(argumentLabel: 5) // argument label specified

func someFunction(_ parameterName: Int) { parameterName }
someFunction(5) // argument label omitted

方法函数之间的这种行为没有区别.

更新(Swift 2. *)

以下描述的功能已被弃用,需要将参数名称两次写入以获得与之前的哈希符号相同的行为.

更新(示例)

对于函数:当调用函数时,某些参数的目的不清楚时,您将为这些参数提供外部名称.

func someFunction(parameterName: Int) { parameterName }
someFunction(5) // What is the meaning of "5"? 

func someFunction(externalParameterName parameterName: Int) { parameterName }
someFunction(externalParameterName: 5) // Now it's clear.

但是,如果外部和本地名称相同,则只需在参数名称之前编写一个哈希符号.

func someFunction(#parameterName: Int) { parameterName }
// It's actually like:
// func someFunction(parameterName parameterName: Int) { parameterName }
someFunction(parameterName: 5)

对于方法:默认情况下,第一个参数名称只是本地的(像函数一样),但是第二个和后续的参数名称都是本地的和外部的(就像你在参数名之前写一个哈希符号一样,这个隐含在这里)

class SomeClass {
    func someMethodWith(firstParameter: Int,andSecondParameter: Int) { ... }
}
SomeClass().someMethodWith(5,andSecondParameter: 10)

您可以使用#(或添加一个明确的外部名称)作为方法的第一个参数,但它不符合Objective-C风格的调用.

class SomeClass {
    func someMethodWith(#firstParameter: Int,andSecondParameter: Int) { ... }
}
SomeClass().someMethodWith(firstParameter: 5,andSecondParameter: 10)

原来的答案

If you want to provide an external parameter name for a function
parameter,and the local parameter name is already an appropriate name
to use,you do not need to write the same name twice for that
parameter. Instead,write the name once,and prefix the name with a
hash symbol (#). This tells Swift to use that name as both the local
parameter name and the external parameter name.

摘录自:苹果公司“Swift编程语言”iBooks. https://itunes.apple.com/ru/book/swift-programming-language/id881256329?l=en&mt=11

猜你在找的Swift相关文章