在Swift 2中使用#

Ron*_*ayo 2 xcode servicestack swift

嗨,所以我的朋友给了我客户的现有项目,它有太多的错误.我一直在调试应用程序,只是浏览这行代码

class func saveFile(#data: NSData, filename: String, directory: NSSearchPathDirectory = .DocumentDirectory) -> Bool {
    var file = filePath(filename, directory: directory)
    return data.writeToFile(file, atomically: true)
}
Run Code Online (Sandbox Code Playgroud)

注意到了#?到底究竟是#什么?

这也是功能的截图#.

附加信息:我认为他们使用了这个库服务栈,我认为它只适用于xamarin.

red*_*t84 7

在Swift 1中,#用于为函数参数提供相同的外部和内部名称.例如,函数定义:

func save(#data: Float) {
    print(data)
}
Run Code Online (Sandbox Code Playgroud)

相当于:

func save(data data: Float) {
    print(data)
}
Run Code Online (Sandbox Code Playgroud)

这在Swift 2中被删除,必须明确声明外部名称.


外部参数名称用于使函数调用更具惯用性.例如:

func send(sender: String, receiver: String) {
    print("Sending from \(sender) to \(receiver)")
}
Run Code Online (Sandbox Code Playgroud)

被称为这样:

send("Cupertino", "New York")
Run Code Online (Sandbox Code Playgroud)

通过添加外部参数,您可以在不更改正文的情况下使该函数调用更加惯用:

func send(from sender: String, to receiver: String) {
    print("Sending from \(sender) to \(receiver)")
}
Run Code Online (Sandbox Code Playgroud)

使代码更具可读性:

send(from: "Cupertino", to: "New York")
Run Code Online (Sandbox Code Playgroud)

Apple文档中的更多信息.