Rubyは型宣言しなくても使える。
配列の要素数もあらかじめ決めておく必要はない。(後から自由に追加できる)
下記の例だと、配列生成時には、array[10]は存在しないので、読出しても空っぽで、型もない。
array = [1,2,3,4,5]
puts "⇒ #{array}"
# 配列の宣言
# ⇒ [1, 2, 3, 4, 5]
array[2] = 0
puts "⇒ #{array}"
# [2]の要素を0に更新する
# ⇒ [1, 2, 0, 4, 5]
array << 100
puts "⇒ #{array}"
# 最終要素(値は100)を追加
# ⇒ [1, 2, 0, 4, 5, 100]
array.delete(0)
puts "⇒ #{array}"
# 配列の中の0の値を持つ要素を削除
# ⇒ [1, 2, 4, 5, 100]
array.insert(2, 3)
puts "⇒ #{array}"
# 要素[2]に値3を挿入
# ⇒ [1, 2, 3, 4, 5, 100]
puts "⇒ #{array[10]}"
# [10]の要素を指定
# 
puts "⇒ #{array[10].class}"
# [10]の要素の型
# NilClass
Rubyは配列の要素の型が異なっていても問題ない。
array.concat(array_mix)は、arrayそのものが書き換わる
array_mix = [0, "cats", 5.5]
puts "⇒ #{array_mix}"
puts "⇒ array_mix[0].class: #{array_mix[0].class}" 
puts "⇒ array_mix[1].class: #{array_mix[1].class}" 
puts "⇒ array_mix[2].class: #{array_mix[2].class}" 
# Rubyは型の異なる要素で生成可能
# ⇒ [0, "cats", 5.5]
# ⇒ array_mix[0].class: Integer
# ⇒ array_mix[1].class: String
# ⇒ array_mix[2].class: Float
temp = array.concat(array_mix)
puts "⇒ 結合結果:#{temp}"
puts "⇒ array: #{array}"
puts "⇒ array_mix: #{array_mix}"
# 配列の結合
# 結合結果:[1, 2, 3, 4, 5, 100, 0, "cats", 5.5]
# ⇒ array: [1, 2, 3, 4, 5, 100, 0, "cats", 5.5]
# ⇒ array_mix: [0, "cats", 5.5]
array[1] = array_mix
puts "⇒ array: #{array}"
# 配列の中に配列 array[1]をarray_mixで更新
# ⇒ array: [1, [0, "cats", 5.5], 3, 4, 5, 100, 0, "cats", 5.5]
array_message = ["I", "love", "cats", "!!"]
puts "元の配列: #{array_message} "
temp = array_message.join(' ')
puts "⇒ array_mix: #{temp}"
# 配列の文字列をくっつけてみる
# 元の配列: ["I", "love", "cats", "!!"]
# ⇒ array_mix: I love cats !!
 
