我正尝试使用自定义函数创建一个简单的Swift 3模板,以便在Xcode应用程序中使用postfix一元运算符来计算百分比。这可能看起来像一个重复的问题,因为我以前的帖子中的accepted answer已经展示了如何在Playground中做到这一点。但是我发现自定义函数在Xcode项目中的工作方式不同。成员运算符'%'必须至少有一个类型为'ViewController'的参数
在模板低于,我宣布’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)
}
}
EDITED模板
这里的基础上,接受的答案工作模板。我没有理解在文件范围声明操作符是什么意思。
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。
我也尝试将函数移动到文件范围,因为您建议它不再是静态的。这次我测试了它,它确认你的答案。谢谢。 – Greg
您可能对使用静态后缀函数的解决方案感兴趣。无论如何,我从你的输入中学到了很多东西。谢谢。见最终编辑http://stackoverflow.com/questions/40941827/how-to-access-a-custom-function-from-any-file-in-the-same-swift-project – Greg