Xcodeアプリでpostfix単項演算子を使用してパーセンテージを計算するためのカスタム関数を使用して、単純なSwift3テンプレートを作成しようとしています。私の以前の投稿で受け入れられた回答はすでに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’.
%
関数をstatic
Xcodeプロジェクトに含める必要がある理由と、同じ行のコンテキストで最後のエラーメッセージが何を意味するのかを誰かが説明できますか(以下を参照)?ありがとう
ドラフトテンプレート
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)
}
}
脚注
受け入れられた回答に基づいて、単一のファイルにグループ化されたカスタム演算子関数に、同じプロジェクト内の他のファイルからアクセスできるようになりました。詳細については、こちらをご覧ください。
ファイルスコープで「演算子」を宣言しました
いいえ、しませんでした。定義の範囲でUIViewController
定義しました。
postfix operator %
class ViewController: UIViewController {
// ...
static postfix func % (percentage: Int) -> Double {
return (Double(percentage) / 100)
}
}
一つはできるが、それらはそのタイプの少なくとも一つの引数を取る場合にのみ、スウィフト3タイプの静的メンバ関数として演算子を定義します。
問題を修正するには、宣言をファイルスコープに移動します。
postfix operator %
postfix func % (percentage: Int) -> Double {
return (Double(percentage) / 100)
}
class ViewController: UIViewController {
// ...
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加