我正嘗試使用自定義函數創建一個簡單的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