我是 ruby 新手,开始学习 ruby 概念
从下面的代码段我只想知道为什么传递 params = {}
作为参数
我不明白分配 params={}
..这是什么意思?
def go_to_print_options(params = {})
if 'short' == params['flow']
short_flow_to_print_options(params)
else
params[:mobile] ? print_options(params) :flow_to_print_options(params)
end
end
还有这个 checkinh 是什么意思 if 'short' == params['flow']
最佳答案
作为方法参数的 params={}
表示您可以在方法调用时将变量参数哈希作为参数发送。如果没有传递任何参数,它会被视为空哈希,默认情况下。
因此,对于上述方法,您可以调用go_to_print_options(flow: 'short', mobile: 'apple')
。
您可能想知道这不是 hash
;但有一个问题 - 如果 Hash
是函数调用中的最后一个参数,您可以跳过花括号。
如此有效,对于您的方法:
go_to_print_options(flow: 'short', mobile: 'apple')
和 go_to_print_options({flow: 'short', mobile: 'apple'})
是一样的。
在函数定义中,{flow: 'short', mobile: 'apple'}
映射到 params
。
params[:flow] #=> 'short'
params[:mobile] #=> 'apple'
params[:foo] #=> nil #since no such key is present
注意上面那些是符号,您也可以将字符串作为键传递:go_to_print_options("flow"=> 'short', "mobile"=> 'apple')
如果您只是调用 go_to_print_options
。它仍然有效,params
将是一个空散列 ({}
),绝对没有任何键。
通过将 Hash
作为参数传递,您可以向您的方法发送可变数量的参数。在方法定义中,您可以将它们作为 params['flow']
访问,这将为上述调用提供 short
的值。
if 'short' == params['flow']
是 Ruby 中的一个简单条件语句。您正在检查 params['flow']
和 short
的值是否相等。如果 params['flow']
确实是 short
,则底层 block 将被调用 (short_flow_to_print_options(params)
)
关于ruby-on-rails - 在 ruby 代码中将参数作为 param={} 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692545/