-1
A
答えて
1
プロトコルを宣言するときは、関数のパラメータを宣言する必要があります。これは、あなたの関数に、後でではなく、いくつのパラメータがあるかを選択するときです。
プロトコルは契約のようです。バインディング部分は、使用する前にすでに決定されています。
オブジェクトがプロトコルに準拠している場合は、宣言したときにその関数を使用する必要があります。パラメータを追加/変更/削除するオプションはありません。
protocol Juggling {
func juggle(object: String, number: Int)
func launch(object: String, howMany number: Int)
}
プロトコルに準拠したオブジェクトは、それらが宣言されているなどの機能を使用する必要があります:例えば、このようなプロトコルで
、
struct Juggler: Juggling {
let name: String
func juggle(object: String, number: Int) {
print("Juggling \(number) x \(object)")
}
func launch(object: String, howMany number: Int) {
print("Launching \(number) x \(object)")
}
}
そして、発信者側のあなたは
let joe = Juggler(name: "Joe")
joe.launch(object: "baton", howMany: 2)
joe.juggle(object: "ball", number: 5)
たとえば、を使用することはできませんメソッドでは、呼び出し元側の「howMany」ではなく「number」を使用するため、プロトコルに準拠しなくなりました。
プロトコル拡張を使用する場合には、同じルールです:たとえば
protocol Juggling {
func juggle(object: String, number: Int)
func launch(object: String, howMany number: Int)
}
extension Juggling {
func juggle(object: String, number: Int) {
print("Juggling \(number) x \(object)")
}
func launch(object: String, howMany number: Int) {
print("Launching \(number) x \(object)")
}
}
struct Juggler: Juggling {
let name: String
}
let joe = Juggler(name: "Joe")
joe.launch(object: "baton", howMany: 2)
joe.juggle(object: "ball", number: 5)
あなたの代わりに、発信者側の
joe.launch(object: "baton", howMany: 2)
の
joe.launch(object: "baton", number: 2)
を使用しようとすると、Xcodeのでしょう実際にはfix-itとパラメータ名を置き換える提案を示します。
関連する問題
- 1. template宣言メソッドポインタが - 関数の引数
- 2. PHPクラスのメソッドの引数の宣言
- 3. 可変数/引数タイプの関数用のTypeScript宣言ファイル
- 4. スイフトプロトコル指向エクステンション
- 5. Swiftはなぜ関数宣言で引数ラベルとパラメータ名の両方を必要としますか?
- 6. 可変数のテンプレート引数を宣言するには?
- 7. 関数定義のVoid引数で、宣言のプリミティブデータ型です
- 8. 暗黙の関数宣言の場合のデフォルト引数のプロモーション
- 9. 宣言関数は
- 10. C++変数宣言
- 11. c#変数宣言
- 12. 宣言SQL変数 -
- 13. ジェネリック関数宣言
- 14. 複数の宣言
- 15. nodejs関数宣言
- 16. 宣言整数:COUNTIF
- 17. ブートストラップ関数宣言
- 18. 関数宣言は、
- 19. Golang混合逢引と宣言
- 20. 引数ラベル「(UUIDString)は、」
- 21. 引数ラベルは3
- 22. Cで引用符なしの文字変数を宣言
- 23. テンプレート引数としてのクラスの前方宣言
- 24. Scala:同じ宣言を持つ2つの暗黙の引数
- 25. select case structure内で引数を宣言する
- 26. コンストラクタ引数クラスのインスタンスを宣言するときのエラー
- 27. 変数を関数の引数として宣言してみませんか?
- 28. スイフトプロトコル指向の混在スコープ
- 29. エラーメッセージC言語での変数宣言
- 30. 目的C:@property宣言とインスタンス変数の宣言
eggzachery!ありがとうございました! – SKOOP
私は答えにコメントし、説明を追加しました。 – Moritz
あなたの答えは素晴らしいです! – SKOOP