Anda dapat menggunakan array dengan operator percikan *
.
EXCEPTIONS = [FooException, BarException]
begin
a = rand
if a > 0.5
raise FooException
else
raise BarException
end
rescue *EXCEPTIONS
puts "rescued!"
end
Jika Anda akan menggunakan konstanta untuk array seperti di atas (dengan EXCEPTIONS
), perhatikan bahwa Anda tidak dapat mendefinisikannya dalam definisi, dan juga jika Anda mendefinisikannya di kelas lain, Anda harus merujuknya dengan namespace-nya. Sebenarnya, itu tidak harus konstan.
Operator Percikan
Operator percikan *
"membongkar" sebuah array dalam posisinya sehingga
rescue *EXCEPTIONS
artinya sama dengan
rescue FooException, BarException
Anda juga dapat menggunakannya dalam literal array sebagai
[BazException, *EXCEPTIONS, BangExcepion]
yang sama dengan
[BazException, FooException, BarException, BangExcepion]
atau dalam posisi argumen
method(BazException, *EXCEPTIONS, BangExcepion)
yang berarti
method(BazException, FooException, BarException, BangExcepion)
[]
meluas ke kekosongan:
[a, *[], b] # => [a, b]
Satu perbedaan antara ruby 1.8 dan ruby 1.9 adalah dengan nil
.
[a, *nil, b] # => [a, b] (ruby 1.9)
[a, *nil, b] # => [a, nil, b] (ruby 1.8)
Hati-hati dengan objek yang to_a
didefinisikan, karena to_a
akan diterapkan dalam kasus seperti ini:
[a, *{k: :v}, b] # => [a, [:k, :v], b]
Dengan jenis objek lain, ia mengembalikan dirinya sendiri.
[1, *2, 3] # => [1, 2, 3]