[解決済み] 計算された読み取り専用プロパティとSwiftの関数との比較
2023-01-01 17:54:39
質問
SwiftのWWDCセッション「Introduction to Swift」では、読み取り専用のプロパティである
description
がデモされています。
class Vehicle {
var numberOfWheels = 0
var description: String {
return "\(numberOfWheels) wheels"
}
}
let vehicle = Vehicle()
println(vehicle.description)
メソッドを使用する代わりに上記の方法を選択することに何か意味はあるのでしょうか。
class Vehicle {
var numberOfWheels = 0
func description() -> String {
return "\(numberOfWheels) wheels"
}
}
let vehicle = Vehicle()
println(vehicle.description())
読み取り専用の計算されたプロパティを選択する最も明白な理由は、次のようなものだと思われます。
-
セマンティクス
- この例では
description
が実行されるアクションではなく、クラスのプロパティであることは理にかなっています。 - 簡潔さ/明確さ - は、値を取得する際に空の括弧を使用する必要性を防ぎます。
上記の例は明らかに単純すぎますが、他にどちらかを選択する正当な理由はあるでしょうか。たとえば、関数やプロパティに、どちらを使用するかを決める指針となるような機能がありますか?
注:一見すると、これは非常に一般的な OOP の質問のように見えますが、この言語を使用する際のベストプラクティスを導くような Swift 固有の機能を知りたいと思っています。
どのように解決するのですか?
それは、ほとんどスタイルの問題だと思います。私は プロパティ を使うことを強く希望します。プロパティとは、取得や設定ができる単純な値のことです。私は 関数 (またはメソッド)を使います。例えば、何かを計算したり、ディスクやデータベースから読み込んだりしなければならないかもしれません。この場合、単純な値しか返されない場合でも、私は関数を使用します。そうすることで、呼び出しが安い(プロパティ)か高い(関数)かを簡単に確認することができるのです。
AppleがいくつかのSwiftコーディング規約を公開するとき、おそらく私たちはより明確になるでしょう。
関連
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] オブジェクトのプロパティを値でソートする
-
[解決済み] 変数を使用してオブジェクトのプロパティに動的にアクセスする
-
[解決済み] 関数は return 文を1つだけ持つべきですか?
-
[解決済み] プロパティとゲッターとセッターの使い分け
最新
-
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で1つのビューコントローラの向きを縦向きのみに固定する方法
-
[解決済み] タスクが終了するまで待機する
-
[解決済み] Swift 1.2では、宣言は「final」と「dynamic」の両方にはなり得ないというエラーがある
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swift - 複数条件でオブジェクトの配列を並べ替える
-
[解決済み] ビルド入力ファイルが見つかりません」Swift 4.2、Xcode 10.0
-
[解決済み] Swiftでenumの関連値を無視して比較する方法は?
-
[解決済み] SHA256 in swift