[解決済み] Swift で型に表示されるテキスト表現を変更するにはどうしたらいいですか?
2022-12-12 09:59:44
質問
文字列補間で表示されるテキスト出力を変更するにはどうしたらよいでしょうか。
文字列補間の際に表示される
Printable
プロトコルは最も明白に見えますが、これは文字列補間とインスタンスの印刷の両方で無視されます。
struct Point : Printable
{
var x = 0
var y = 0
var description : String {
return "(\(x), \(y))"
}
func toString() -> String {
return description
}
}
同様に
toString()
の規約も何の効果もありません。
var p = Point(x: 10, y: 20)
println(p) // V11lldb_expr_05Point (has 2 children)
println("\(p)") // V11lldb_expr_05Point (has 2 children)
println(p.description) // (10, 20)
println("\(p.description)") // (10, 20)
PlayGroundでは、構造体に対して独自のString表現を使用するため、動作がまた異なります。
p // {x 10, y 20}
インスタンスの表示方法を変更する方法はありますか?
どのように解決するのですか?
スウィフト2~4
概要
に準拠する。
CustomStringConvertible
プロトコルに準拠し
description
:
var description: String {
return "description here"
}
例
いくつかの構造体を作成することができます。
struct Animal : CustomStringConvertible {
let type : String
var description: String {
return type
}
}
struct Farm : CustomStringConvertible {
let name : String
let animals : [Animal]
var description: String {
return "\(name) is a \(self.dynamicType) with \(animals.count) animal(s)."
}
}
初期化すれば
let oldMajor = Animal(type: "Pig")
let boxer = Animal(type: "Horse")
let muriel = Animal(type: "Goat")
let orwellsFarm = Farm(name: "Animal Farm", animals: [oldMajor, boxer, muriel])
カスタムディスクリプションは、プレイグラウンドに表示されます。
参照
CustomDebugStringConvertible
を参照してください。これは、デバッグ時にもっと詳細な出力をするために使うことができます。
使用上の注意
を初期化することができます。
String
を初期化することができます。
を使わずに
がこのプロトコルを実装している場合。例えば
このため、docsでは
使用方法
CustomStringConvertible
を一般的な制約として使うか、適合する型のdescription
に直接アクセスすることは、それゆえ推奨されません。
関連
-
[解決済み] 純粋な」Swift で弱いプロトコル参照を作るには (@objc なしで) どうしたらいいですか?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] Swift で app delegate への参照を取得するにはどうすればよいですか?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み】Swiftで変数の型またはクラスを表示するにはどうすればよいですか?
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】(Swiftで)オブジェクトの型を調べるには?)
-
[解決済み] UIViewの定高制約をプログラムで更新するには?
-
[解決済み] 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ダブルからストリング
-
[解決済み] Swiftで警告を消すには?
-
[解決済み] Swiftのリバースレンジ
-
[解決済み] Swiftで範囲を作成する方法は?
-
[解決済み] swiftにおける "precondition "と "assert "の違いとは?
-
[解決済み] Java の toString() の Swift 版
-
[解決済み] ビルド入力ファイルが見つかりません」Swift 4.2、Xcode 10.0
-
[解決済み] ボタンを無効化する
-
[解決済み] Swift- Remove Push Notification Badge number?
-
[解決済み] SwiftUIのDSLを可能にするものは何ですか?