web-dev-qa-db-ja.com

オプションのパラメーターを持つメソッド

パラメーターを受け入れることができるが、パラメーターなしで呼び出すこともできるメソッドを作成する方法はありますか?その場合、パラメーターは次のようにnilと見なされますか?

some_func(variable)

some_func
40
TamRock
def some_func(variable = nil)
  ...
end
72
sawa

デフォルト値を持つパラメータのより明白なオプションに加えて、Sawaはすでに示していますが、配列またはハッシュを使用すると便利な場合があります。どちらのソリューションも、引数としてnilを保持します。

1。配列として受信:

def some_func(*args)
  puts args.count
end

some_func("x", nil)
# 2

2。ハッシュとして送受信:

def some_func(**args)
  puts args.count
end

some_func(a: "x", b: nil)
# 2
16
bogl

引数としてハッシュを使用して、より自由に設定することもできます。

def print_arg(args = {})
  if args.has_key?(:age)
    puts args[:age]
  end
end

print_arg 
# => 
print_arg(age: 35, weight: 90)
# => 35
5
Charmi