5
プロトコルの機能を設定して、オプションの引数を受け取ったり、無視することができますか?あなたは "メソッド" を宣言している、に、すべてのプロトコルメソッド/ファンクションのデフォルト引数と無視引数を短くする
//Goal: Default forRound should be 0 if none provided
class OnlineGame : Game {
func modeName(forRound: Int = 0) -> ModeName {
//Some code
}
}
//Goal: I don't care about the forRound value here
class OfflineGame : Game {
func modeName(_ forRound: Int) -> ModeName {
//Some code
}
}
ありがとう:あなたの
OfflineGame
場合、あなたは
_
内部名ようにパラメータを無視することができます。私はOnlineGameクラスで書いたように関数を設定しても、 'OnlineGame'にはまだ問題がありますが、パラメータなしで' game.modeName() 'を呼び出すことはできません:' func modeName(_ forRound:Int = 0) ModeName' – Kalzemニース。これは私のために働いた。私の最初の試みでは、私は明らかに何らかの過ちを犯しました。ありがとう! –
@BabyAzerty 'game'変数はどのように宣言しますか? 'let game:Game = OnlineGame()'であれば、 'OnlineGame'クラスのインスタンスであることをコンパイラが知らないので、' .modeName() 'を直接呼び出すことはできません。 – rintaro