内部ポインタのズレとはどういう事で、それが生じることで何が起きるのでしょうか?
rubyを勉強している途中で、Qiita記事の中で、内部ポインタのズレが生じるとあったのですが、調べても理解が難しかったので教えてください。
以下のコードが、each内でdeleteした場合に内部ポインタのズレで、思った出力ができないコーです。
Ruby
1target = ['hoge', 'fuga'] # 元となるデータ 2list = ['hoge', 'fuga'] # 削除対象の文字列のリスト 3target.each do |str| 4 target.delete(str) if list.include?(str) 5end 6p target # ["fuga"]
以下のコードが、上のコードの内部ポインタのずれを解消したコードです。
Ruby
1target = ['hoge', 'fuga'] # 元となるデータ 2list = ['hoge', 'fuga'] # 削除対象の文字列のリスト 3target.each_with_index do |str| 4 p target[0] # 'hoge' 5 target.delete(str) if list.include?(str) 6 p target[0] # 'fuga' 7end 8# 要素数(hoge削除後のfuga1個)とループの数(hogeを削除したときの1回)が一致したので1周しかしない 9p target # ['fuga'] 10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。