Japanese subtitles

← 11-15 Yello Mutation

11-15 Yello Mutation

Get Embed Code
7 Languages

Showing Revision 1 created 07/21/2014 by osawakjvta.

  1. ミューテーションが現在のオブジェクトを
    変更するものだと解説してきました
  2. しかし文字列を使って行ったものとの違いを
    確かめることはできません
  3. 新たな変数を挿入することで
    違いを確認することができます
  4. 前の例に戻りましょう
  5. 代入文を追加して新しい変数を挿入します
  6. 変数qを挿入すると仮定しましょう
  7. そしてpをqに代入します
    つまりこのリストのオブジェクトであるpの値が
  8. qが参照するものになるということです
  9. ここで重要なのは代入後に
    pとqが同じリストを参照しているということです
  10. qの要素の値を1つ変更する代入文を
    行ったと仮定します
  11. これでqの要素4が変更されます
  12. これがqの要素4です
  13. その値を新たな感嘆符に変更します
  14. pの値も変更されます
  15. 代入文にはpが含まれていませんが
  16. pとqは同じオブジェクトを参照しているので
    pの変数も変更されることになります
  17. 文字列を使用した場合は異なることを確認するために
    文字列でこれを試してみましょう
  18. 文字列で最初の文字を置き換えるために
    代入を使用した場合
  19. 何が起きるか予想してみてください
  20. 実行してみましょう
  21. エラーが出ました
  22. 文字列が変更できないものだったからです
  23. 文字列の値を変更する方法はありません
  24. 文字列に代入する方法はありませんという
    エラーが表示されます
  25. これは不変的なオブジェクトなので
    代入に対応していません
  26. 変更できるオブジェクトと
    できないオブジェクトの重要な違いは
  27. オブジェクトが変更できる場合は
  28. 同じオブジェクトを参照しているかもしれない
    他の変数に注意しなければならないことです
  29. そのオブジェクトの値を変えます
  30. 変更したと思われる変数だけでなく
  31. 他の変数の値にも同じように作用します
  32. この例を確かめてみましょう
  33. pを文字列Helloを含むリストに設定します
  34. 新しい変数qを挿入しその変数にpを代入します
  35. pとqの値を出します
  36. pとq両方が文字列Helloを含んでいると
    確認できますね
  37. しかしここでゼロの位置にある値を
    変更してみましょう
  38. pのゼロの位置にある値に
    文字Yを保持する代入を行います
  39. これによってpの値が変更されます
  40. 驚くことにqの値も変更されます
  41. 代入でqを使用していないにもかかわらず
    qの値が変更されました
  42. qがpと同じオブジェクトを参照しているからです