【发布时间】:2016-12-02 12:25:56
【问题描述】:
我正在尝试创建一个简单的 Swift 3 模板,其中包含一个自定义函数,用于在 Xcode 应用程序中使用后缀一元运算符计算百分比。这似乎是一个重复的问题,因为我之前的帖子中的accepted answer 已经展示了如何在 Playground 中执行此操作。但后来我发现自定义函数在 Xcode 项目中的工作方式不同。
在模板下面中,我声明了’operator' at file scope(或者至少我相信我这样做了)。但是当声明后缀函数时,Xcode 建议
Operator '%' declared in type 'ViewController' must be 'static'
并提供了一个修复它来插入static。使用 static 插入 Xcode 然后建议
Member operator '%' must have at least one argument of type 'ViewController’.
谁能解释为什么 Xcode 项目中的 % 函数必须是 static 以及同一行上下文中最后一条错误消息的含义(见下文)?谢谢
草稿模板
import UIKit
postfix operator %
class ViewController: UIViewController {
var percentage = Double()
override func viewDidLoad() {
super.viewDidLoad()
percentage = 25%
print(percentage)
}
static postfix func % (percentage: Int) -> Double {
return (Double(percentage) / 100)
}
}
已编辑模板
这是基于已接受答案的工作模板。我不明白在文件范围内声明运算符是什么意思。
import UIKit
postfix operator %
postfix func % (percentage: Int) -> Double {
return (Double(percentage) / 100)
}
class ViewController: UIViewController {
var percentage = Double()
override func viewDidLoad() {
super.viewDidLoad()
percentage = 25%
print(percentage)
}
}
脚注
基于已接受的答案,现在可以从同一项目中的其他文件访问分组在单个文件中的自定义运算符函数。要查看更多信息,请访问here。
【问题讨论】: