今天我在Xcode中打开了我的项目,它需要将当前的Swift转换为Swift 3.转换后,我发现函数的所有参数都有一个下划线。例如,func didGetWeather(_ weather: Weather) {}
。我试图拿走下划线,它工作正常。我想知道那些下划线是什么。iOS Swift 3参数在前面有下划线
回答
在swift3之前默认的第一个参数的标签没有在函数调用中列出,在swift3中,未命名参数的方式是在签名中的参数名称之前放置一个下划线,swift3 migrator add下划线函数第一个参数不会打破依赖于不在函数调用中放置第一个标签的现有代码。
是的,它在Swift 3.0中的更新日志。
所有功能参数有标签,“_”与第一的功能:
现在下面的所有默认的方法也有(_)。
override func viewWillAppear(_ animated: Bool)
override func didMoveToView(_ view: SKView)
func textFieldShouldReturn(_ textField: UITextField) -> Bool
按照苹果的文档:
如果你不想为一个参数一个参数的标签,写一个下划线(_),而不是该参数的一个明确的说法标签。
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
// In the function body, firstParameterName and secondParameterName // refer to the argument values for the first and second parameters. }
someFunction(1, secondParameterName: 2)
如果当你调用函数中的参数有一个参数标签,该参数必须进行标识。
在斯威夫特2,我们用于声明类似的功能:
func myFunc(param1 param:String) {}
,我们不得不把它想:
myFunc(param1:)
但后来苹果推出了一种省略使用下划线(_)的参数标签,函数声明将为:
func myFunc(_ param:String) {}
,然后我们可以调用函数有两种方式:
myFunc(_:) // when we don't want to pass any parameters
或者
myFunc(param:"some string") // when we want to pass any parameters
第一种方式(使用_)主要用于当我们想定义一个选择器。对于如:
someButton.addTarget(self, action: #selector(shareCatalog(_:)), for: .touchUpInside)
- 1. 什么是Swift的catch块前面的_下划线?
- 2. 为什么在MongoDb文档ID前面有下划线?
- 3. 在Python中使用前导下划线的参数
- 4. preg_replace下划线之前的所有数字,比替换下划线和结束
- 5. 颜色只在Swift中加下划线
- 6. intellij函数参数带下划线
- 7. 下划线忽略可选参数
- 8. 命名参数中的下划线
- 9. 使用ios图表的线图swift 3
- 10. Mapbox iOS SDK多段线swift 3
- 11. iOS Swift 3 - UIDatePicker
- 12. iOS-Swift 3-SDWebImage
- 13. 下划线下面的“密码”布局
- 14. 崇高3多用下划线
- 15. Typescript - 显示下划线参数 - 这里有什么问题
- 16. 如何在iOS中的单词和下划线之间添加空格Swift
- 17. 下划线在Python
- 18. iOS 10 Swift 3 - ViewController里面的ScrollView
- 19. 作为函数/类方法的参数,双下划线在单个下划线之后的用途是什么?
- 20. Python的前导下划线_variables
- 21. 以下划线为前缀的变量
- 22. 前下划线的主题名称
- 23. PHP - 前大写字母加下划线
- 24. 属性名称的下划线前缀?
- 25. 加下划线的前n个字符
- 26. Swift 3:CNLabeledValue作为参数
- 27. Swift 3结构参数Alamofire4
- 28. Swift 3可选参数
- 29. Elisp函数在当前行中替换下划线的空格
- 30. Swift下划线方法和函数做什么?
检查[斯威夫特3的这一个https://github.com/apple/swift-evolution/blob/master/proposals/0046-first-label.md –
可能重复:为什么符号\ _是在发送者之前在动作参数中添加的?](http://stackoverflow.com/questions/39554622/swift-3-why-symbol-is-added-before-before-sender-in-parameters-of-action) – kennytm