\
2014年07月12日
Posted by 屋台ブルー at 2014年07月12日00:00 Comment(0)

Swiftで遊ぼう! - 4 Arrayのコピーがおかしい?(β3)

swift_logo-----2014年8月9日
Xode6β5で確認したところ。以下の問題は修正されていました。配列型(Array)の値をコピーすると、リファレンス型ではなく実数のコピーができるという記述通りの振る舞いになりました。
a[0] = 42
println(a[0])
// 42
println(b[0])
// 1
println(c[0])
// 1
とちゃんとオリジナルだけ変更されました(^^)/

-----2014年7月12日のオリジナルポスト
Arrayのアイテムに対して値を割り当てた時の挙動が、The Swift Programming Languageに記載されている内容と異なる。なぜだろう?

使っているplaygorundsはXcode6-beat3(なんだけど、また良くわからない部分が出てきた。


以下のような記述があったんで、そのままXcode6-beta3(2014年7月7日リリース、タイムリーだよね)のplaygroundsに書き込んだんですよ。
-----
var a = [1, 2, 3]
var b = a
var c = a
You can retrieve the first value in the array with subscript syntax on either a, b, or c:

println(a[0])
// 1
println(b[0])
// 1
println(c[0])
// 1
If you set an item in the array to a new value with subscript syntax, all three of a, b, and c will return the new value. Note that the array is not copied when you set a new value with subscript syntax, because setting a single value with subscript syntax does not have the potential to change the array’s length:

a[0] = 42
println(a[0])
// 42
println(b[0])
// 42
println(c[0])
// 42
However, if you append a new item to a, you do modify the array’s length. This prompts Swift to create a new copy of the array at the point that you append the new value. Henceforth, a is a separate, independent copy of the array.
抜粋:: Apple Inc. “The Swift Programming Language”。 iBooks. https://itun.es/jp/jEUH0.l

ところが!!! 最後のprintln(b[0])とprintln(c[0])の値は「1」のまま!!! Array aのアイテムを増やしても減らしてもないのに独立コピーされてるじゃん!
どういうことです?


同じカテゴリー(Swiftで遊ぼう!)の記事画像
Swiftで遊ぼう! - プログラミングまとめ(ときどき更新)
Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明
Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect
Swiftで遊ぼう! - 208 - ルートビューのコード
Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ
Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる
同じカテゴリー(Swiftで遊ぼう!)の記事
 Swiftで遊ぼう! - プログラミングまとめ(ときどき更新) (2021-01-31 00:00)
 Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明 (2015-04-05 00:00)
 Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect (2015-02-06 00:00)
 Swiftで遊ぼう! - 208 - ルートビューのコード (2015-02-05 00:00)
 Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ (2015-02-04 00:00)
 Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる (2015-02-03 00:00)

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
Swiftで遊ぼう! - 4 Arrayのコピーがおかしい?(β3)
    コメント(0)