Ruby on rails 在ruby代码中将argumnets作为param={}传递
我是ruby新手,开始学习ruby概念 从下面的代码段中,我只想知道为什么要将Ruby on rails 在ruby代码中将argumnets作为param={}传递,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是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_prin
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
另外,如果'short'==params['flow']
params
是方法的可选参数,则此检查的含义是什么。如果在调用方法时未给出该值,则使用默认值(此处,{}
,作为空的哈希值
)
params['flow']
获取哈希params
的'flow'
键的值(或nil
,如果params
没有这样的键。params
是方法go_to_print_options
的可选参数。如果在调用默认值时未给出该参数(此处为{})
,因为使用了空的哈希值
params['flow']
获取哈希params
的'flow'
键的值(或者nil
,如果params
没有这样的键。Aparams={}
作为方法参数表示可以在方法调用时将变量参数散列作为参数发送。如果未传递任何参数,则默认情况下将其视为空散列
因此,对于上述方法,您可以调用go\u to\u print\u选项(flow:'short',mobile:'apple')
您可能想知道这不是一个散列
;但有一个问题-如果散列
是函数调用中的最后一个参数,您可以跳过大括号
因此,对于您的方法:
转到打印选项(flow:'short',mobile:'apple')
和转到打印选项({flow:'short',mobile:'apple'))是相同的。
在函数定义中,{flow:'short',mobile:'apple'}
映射到参数
params[:flow] #=> 'short'
params[:mobile] #=> 'apple'
params[:foo] #=> nil #since no such key is present
注意上面的符号,您也可以将字符串作为键传递为:go\u to\u print\u选项(“flow”=>“short”、“mobile”=>“apple”)
如果只调用go\u to\u print\u options
。它仍然有效,params
将是一个空哈希({}
),绝对没有键
通过将Hash
作为参数传递,您可以向方法发送数量可变的参数。在方法定义中,您只需将它们作为params['flow']
进行访问,这将为上述调用提供short
的值
如果'short'==params['flow']
在Ruby中是一个简单的条件。您正在检查params['flow']
和short
的值是否相等。如果params['flow']
确实是short
,则将调用底层块(short\u flow\u-to\u-to\u-print\u-options(params)
)aparams={}
作为方法参数表示可以在方法调用时将变量参数散列作为参数发送。如果未传递任何参数,则默认情况下将其视为空散列
因此,对于上述方法,您可以调用go\u to\u print\u选项(flow:'short',mobile:'apple')
您可能想知道这不是一个散列
;但有一个问题-如果散列
是函数调用中的最后一个参数,您可以跳过大括号
因此,对于您的方法:
转到打印选项(flow:'short',mobile:'apple')
和转到打印选项({flow:'short',mobile:'apple'))是相同的。
在函数定义中,{flow:'short',mobile:'apple'}
映射到参数
params[:flow] #=> 'short'
params[:mobile] #=> 'apple'
params[:foo] #=> nil #since no such key is present
注意上面的符号,您也可以将字符串作为键传递为:go\u to\u print\u选项(“flow”=>“short”、“mobile”=>“apple”)
如果只调用go\u to\u print\u options
。它仍然有效,params
将是一个空哈希({}
),绝对没有键
通过将Hash
作为参数传递,您可以向方法发送数量可变的参数。在方法定义中,您只需将它们作为params['flow']
进行访问,这将为上述调用提供short
的值
如果'short'==params['flow']
在Ruby中是一个简单的条件。您正在检查params['flow']
和short
的值是否相等。如果params['flow']
确实是short
,则将调用底层块(short\u flow\u-to\u-to\u-print\u-options(params)
)params={
实际上只是意味着该方法只接受一个默认值为空散列的参数。说go\u to\u print\u options(6)
仍然是一个有效的方法调用,即使它在运行时会出现TypeError。是的,我知道。我也应该在回答中添加这个参数。:)谢谢!params={}
实际上只是意味着该方法只接受一个默认值为空散列的参数。说转到打印选项(6)
仍然是一个有效的方法调用,即使它在运行时会出现类型错误。是的,我知道。我也应该在回答中添加这一点。:)谢谢!