1

:fooRuby シンボル (例: ) を関数のオプションとして (オプション ハッシュとしてではなく)使用する方法を知りたいです。

例:

round(28.53, :floor)
get_data(:age)

そのような引数を受け入れる関数を作成するにはどうすればよいですか?

4

4 に答える 4

0

メソッドに複数のオプションを送信したいとします。そして、オプションが存在する場合は何かをしたい(この場合はそれを印刷させてください)それ以外の場合は何もしない/気にしないでください

def meth( opt = {} )
  opt.keys.each { |o| puts opt[0]
end

# pass two options 
meth(:name => 'Ruby', :floor => 23.5) #=> Ruby, 23.5

#pass one option
meth(:name => 'Rails') #=> Rails
于 2013-09-06T09:33:52.100 に答える
0

それって問題ですか?

def puts_class param
  puts param.class
end

puts_class :asd

=>
Symbol

実際、シンボルは Ruby メソッドのオプションとして想定されたことはありません。それはハッシュについてです:

some_method(1,2, param: :value, param2: value2) # curly braces omitted
# equal to
some_method(1,2, {param: value, param2: value2})
于 2013-09-06T09:31:05.907 に答える