Ruby on rails 在ruby代码中将argumnets作为param={}传递

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

我是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

另外,如果'short'==params['flow']
params
是方法的可选参数,则此检查的含义是什么。如果在调用方法时未给出该值,则使用默认值(此处,
{}
,作为空的
哈希值


params['flow']
获取哈希
params
'flow'
键的值(或
nil
,如果
params
没有这样的键。

params
是方法
go_to_print_options
的可选参数。如果在调用默认值时未给出该参数(此处为
{})
,因为使用了空的
哈希值


params['flow']
获取哈希
params
'flow'
键的值(或者
nil
,如果
params
没有这样的键。

A
params={}
作为方法参数表示可以在方法调用时将变量参数散列作为参数发送。如果未传递任何参数,则默认情况下将其视为空散列

因此,对于上述方法,您可以调用
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)

a
params={}
作为方法参数表示可以在方法调用时将变量参数散列作为参数发送。如果未传递任何参数,则默认情况下将其视为空散列

因此,对于上述方法,您可以调用
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)
仍然是一个有效的方法调用,即使它在运行时会出现类型错误。是的,我知道。我也应该在回答中添加这一点。:)谢谢!