Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

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}