1. single asterisk atau splat operator (*args)
jika kita memberikan argument pada method yang mempunyai splat operator, maka argument tersebut akan otomatis di ubah menjadi sebuah array. perhatikan contoh berikut:
def my_method(*args)
p args
p args.class
end
my_method(1, "3", nama: 'paijo')
# [1, "3", {:nama=>"paijo"}]
# Array
disini argument apapun akan diterima dan otomatis akan dijadikan sebuah array.
2. double asterisk atau double operator (**args)
method ini meminta sebuah hash sebagai argument, perhatikan contoh berikut:
def my_method(**args)
p args
p args.class
end
my_method(1, "3", nama: 'paijo')
#in `my_method': wrong number of arguments (2 for 0) (ArgumentError)
error akan muncul jika kita memasukan argument selain hash. contoh yang benar:
def my_method(**args)
p args
p args.class
end
my_method(nama: 'paijo')
# {:nama=>"paijo"}
# Hash
tidak semua argument di terima sebagai inputan. hanya hash
saja
3. : parameter
akan meminta argument dengan key yang sesuai dengan di parameter. jika tidak dipenuhi akan memicu error missing keyword: (ArgumentError)
def my_method(name:)
p name
end
my_method
# in `<top (required)>': missing keyword: name (ArgumentError)
4. ampersand parameter (&)
menjadikan block sebagai sebuah parameter, contoh:
def my_method(&block)
yield if block_given?
end
my_method do
puts "hello"
end
#hello
hasil yang sama juga akan diperoleh dengan:
def my_method(&block)
block.call
end
atau:
def my_method
yield
end