配列

次は配列の演算。

puts '配列の演算'
puts '+演算'
p [1, 2] + [6, 7, 8]
# p [1, 2] + nil # test_array.rb:42:in `+': cannot convert nil into Array (TypeError)
puts '*演算'
p [1, 2, 3] * 4
# p [1, 2, 3] * nil # test_array.rb:45:in `*': no implicit conversion from nil to integer (TypeError)
# p [1, 2, 3] * [6,7,8] # test_array.rb:46:in `*': cannot convert Array into Integer (TypeError)
p [1, 2, 3] * 0
p [1, 2, 3] * 'a' # これは実行できちゃう
# p 5 * [1, 2, 3]; # test_array.rb:44:in `*': Array can't be coerced into Fixnum (TypeError)
# p 'b' * [1, 2, 3]; # test_array.rb:44:in `*': cannot convert Array into Integer (TypeError)
puts '-演算'
p [1,2,3,4,5] - [2,3]
p [1,2,3,4,5] - [2,3,6]
p [1,2,3,4,5,2,3] - [2,3]
p ['a', 'b', 'c', 'd', 'e', 'f'] - ['c', 'd']
p ['a', 'b', 'c', 'd', 'e', 'f'] - []
#p ['a', 'b', 'c', 'd', 'e', 'f'] - nil #test_array.rb:52:in `-': cannot convert nil into Array (TypeError)
puts '&演算'
p [1,2,3,4,5] & [2,3]
p [1,2,3,4,5] & [2,3,6]
p [1,2,3,4,5,2,3] & [2,3]
p ['a', 'b', 'c', 'd', 'e', 'f'] & ['c', 'd']
p ['a', 'b', 'c', 'd', 'e', 'f'] & []
# p ['a', 'b', 'c', 'd', 'e', 'f'] & nil # test_array.rb:64:in `&': cannot convert nil into Array (TypeError)
puts '|演算'
p [1,2,3,4,5] | [2,3]
p [1,2,3,4,5] | [2,3,6]
p [1,2,3,4,5,2,3] | [2,3]
p ['a', 'b', 'c', 'd', 'e', 'f'] | ['c', 'd']
p ['a', 'b', 'c', 'd', 'e', 'f'] | []
# p ['a', 'b', 'c', 'd', 'e', 'f'] | nil # test_array.rb:71:in `|': cannot convert nil into Array (TypeError)

出力は以下の通りでした。

配列の演算
+演算
[1, 2, 6, 7, 8]
*演算
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
[]
"1a2a3"
-演算
[1, 4, 5]
[1, 4, 5]
[1, 4, 5]
["a", "b", "e", "f"]
["a", "b", "c", "d", "e", "f"]
&演算
[2, 3]
[2, 3]
[2, 3]
["c", "d"]
[]
|演算
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5]
["a", "b", "c", "d", "e", "f"]
["a", "b", "c", "d", "e", "f"]