Ruby破壊的メソッド - Silver/Gold試験対策
破壊的メソッドのメソッド名には!がついているだけとは限らない
!がつかなくても破壊的メソッドがある
# Arrayの破壊的メソッドを引き続き覚えれば良い # 破壊的 # String#insert s = "string" s.insert(0, "long-") p s #=> "long-string" # 破壊的 # String#replace s = "string" s.replace("another string") p s #=> "another string" # 破壊的 # String#<< s = "string" s << " with more" p s #=> "string with more" # 破壊的 # String#concat s = "string" s.concat(" with added word") p s #=> "string with added word" # 破壊的 # String#[]= s = "string" s.[]=(3,"o") # s[3] = "0" と同じ意味 p s #=> "strong" # 破壊的 # Array#insert array = %w(a b c) array.insert(0, "d", "e", "f") p array #=> ["d", "e", "f", "a", "b", "c"] # 破壊的 # Array#replace array = %w(a b c) p array.replace(%w[c d e]) p array #=> ["c", "d", "e"] # 破壊的 # Array#<< array = %w(a b c) array << ("d") p array #=> ["a", "b", "c", "d"] # 破壊的 # Array#concat array = %w(a b c) array.concat(%w(d e f)) p array #=> ["a", "b", "c", "d", "e", "f"] # 破壊的 # Array#[]= array = %w(a b c) array.[]= 2, "hello" #=> array[2] = "hello"や、array.[]=(2,"hello")と同じこと p array #=> ["a", "b", "hello"] # 破壊的 # Array#shift # 個数分先頭を取り除く array = %w(a b c) p array.shift(2) #=> ["a", "b"] p array #=> ["c"] # 何も引数つけなければ、1つだけ取り除く array = %w(a b c) p array.shift #=> "a" p array #=> ["b", "c"] # 破壊的 # Array#unshift # 先頭に追加する array = %w(a b c) array.unshift(*%w(d e f)) # アスタリスクをつけている p array #=> ["d", "e", "f", "a", "b", "c"] # 何も引数つけなければ、何も起こらない array.unshift p array #=> ["d", "e", "f", "a", "b", "c"] # Array#fill array = Array.new(5) # 長さを指定 array.fill("element") p array #=> ["element", "element", "element", "element", "element"] # Array#push array = %w(a b c) array.push("c","d") p array #=> ["a", "b", "c", "c", "d"] # Array#delete_at array = %w(a b c) p array.delete_at(0) #=> "a" p array #=> ["b", "c"] # Array#delete_if array = %w(a b c) p array.delete_if {|a| a == "b"} #=> ["a", "c"] p array #=> ["a", "c"] # Array#clear array = %w(a b c) array.clear p array #=> [] # Array#pop array = %w(a b c) p array.pop #=> "c" p array #=> ["a", "b"] # 破壊的 # Hash#update hash = {a: 1, b: 2, c: 3} hash.merge(d: 4, e: 5) p hash #=> {:a=>1, :b=>2, :c=>3}。非破壊 hash.update(d: 4, e: 5) p hash #=> {:a=>1, :b=>2, :c=>3, :d=>4, :e=>5}