[解決済み] Swiftでenumをプロトコルに準拠させるには?
2023-01-06 13:04:55
質問
Swift のドキュメントによると クラス , 構造体 そして 列挙型 はすべてプロトコルに適合させることができます。しかし、私は enum と全く同じ振る舞いをするように クラス と 構造体 の例です。
protocol ExampleProtocol {
var simpleDescription: String { get set }
mutating func adjust()
}
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
enum SimpleEnum: ExampleProtocol {
case Base
var simpleDescription: String {
get {
return "A Simple Enum"
}
set {
newValue
}
}
mutating func adjust() {
self.simpleDescription += ", adjusted"
}
}
var c = SimpleEnum.Base
c.adjust()
let cDescription = c.simpleDescription
を取得する方法がわかっていません。
simpleDescription
を呼び出した結果として変化させる方法がわかりません。
adjust()
. 私の例では明らかにそうなっていません。
ゲッター
には値がハードコードされているからです。
simpleDescription
に準拠しつつも
ExampleProtocol
?
どのように解決するのですか?
これは私の試みです。
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
enum ExampleEnum : ExampleProtocol {
case Base, Adjusted
var simpleDescription: String {
return self.getDescription()
}
func getDescription() -> String {
switch self {
case .Base:
return "A simple description of enum"
case .Adjusted:
return "Adjusted description of enum"
}
}
mutating func adjust() {
self = ExampleEnum.Adjusted
}
}
var c = ExampleEnum.Base
c.adjust()
let cDescription = c.simpleDescription
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み] 純粋な」Swift で弱いプロトコル参照を作るには (@objc なしで) どうしたらいいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Swiftがエラーを報告。アボートトラップ:6
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] タスクが終了するまで待機する
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
-
[解決済み] SwiftUIで条件付きでビューを使用する
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?
-
[解決済み] swift で文字列から数字以外の文字を削除する
-
[解決済み] ラウンドトリップスウィフト番号の種類は、データとの間で
-
[解決済み] Swiftでクラスメソッド/プロパティを作成するには?
-
[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?