[解決済み】swift言語におけるstructureとclassの比較
2022-04-15 18:26:18
質問
アップルブックより 構造体とクラスの最も重要な違いの1つは、構造体はコード内で受け渡しされるときに常にコピーされますが、クラスは参照渡しされることです。
どなたか、その意味を理解するのにご協力いただけませんか?私には、クラスと構造体は同じに見えます。
どのように解決するのですか?
以下は
class
. 名前が変更されると、両方の変数から参照されるインスタンスが更新されることに注意してください。
Bob
が
Sue
は、どこもかしこも
Bob
が参照されたことがある。
class SomeClass {
var name: String
init(name: String) {
self.name = name
}
}
var aClass = SomeClass(name: "Bob")
var bClass = aClass // aClass and bClass now reference the same instance!
bClass.name = "Sue"
println(aClass.name) // "Sue"
println(bClass.name) // "Sue"
そして、今度は
struct
を見ると、値がコピーされ、各変数はそれ自身の値のセットを保持していることがわかります。名前を
Sue
というように
Bob
の構造体です。
aStruct
は変更されません。
struct SomeStruct {
var name: String
init(name: String) {
self.name = name
}
}
var aStruct = SomeStruct(name: "Bob")
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.name = "Sue"
println(aStruct.name) // "Bob"
println(bStruct.name) // "Sue"
つまり、ステートフルな複合エンティティを表現するために
class
はすごいですね。しかし、単に測定値や関連データのビットのような値には
struct
そうすれば、副作用を心配することなく、簡単にコピーして計算したり、値を変更したりすることができます。
関連
-
[解決済み] Swiftのstatic funcとclass funcの違いは何ですか?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] SwiftはPass By ValueかPass By Referenceか
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftの@selector()?
-
[解決済み】==と===の違いについて
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
-
[解決済み] SwiftのプロトコルとJavaのインターフェイスを比較する
最新
-
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はPass By ValueかPass By Referenceか
-
[解決済み] なぜクラスではなくストラクチャーを選ぶのか?
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み】PECS(Producer Extends Consumer Super)って何?)
-
[解決済み】Swiftでオブジェクトが与えられた型かどうかを確認する
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
-
[解決済み] ミュータブルとイミュータブルのオブジェクト
-
[解決済み] 構造体の高速化と変異