Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向ruby葫芦方法传递参数的更好方法_Ruby_If Statement_Case_Calabash - Fatal编程技术网

向ruby葫芦方法传递参数的更好方法

向ruby葫芦方法传递参数的更好方法,ruby,if-statement,case,calabash,Ruby,If Statement,Case,Calabash,我有以下ruby葫芦步骤: When(/^I enter (phone number|email)$/) do |method| login_type = case method when 'phone number' true when 'email' false else raise("#{method} is not supported") end verify_logi

我有以下ruby葫芦步骤:

When(/^I enter (phone number|email)$/) do |method|
login_type = case method
        when 'phone number'
          true
        when 'email'
          false
        else
          raise("#{method} is not supported")
      end
verify_login_page(type: login_type)
aggregator = case method
             when 'phone number'
               Aggregator::PHONE
             when 'email'
               Aggregator::EMAIL
             else
               Aggregator::ALL
           end
get_and_enter_code(aggregator)
end
尽管这看起来很清楚,但我很确定我可以从设计的角度做得更好。特别是我不喜欢的是带有真/假赋值的login_类型case方法。
怎么做比较好?谢谢

您可以使用三元运算符赋值:

When(/^I enter (phone number|email)$/) do |method|
  unless  ['phone number', 'email'].include?(method)
    raise "#{method} is not supported"
  else
    login_type = method == 'phone number' ? true : false
  end

  verify_login_page(type: login_type)

  aggregator = login_type ? Aggregator::PHONE : Aggregator::EMAIL

  get_and_enter_code(aggregator)
end

由于引发异常,因此聚合器::ALL案例永远不会发生。

您可以使用三元运算符赋值:

When(/^I enter (phone number|email)$/) do |method|
  unless  ['phone number', 'email'].include?(method)
    raise "#{method} is not supported"
  else
    login_type = method == 'phone number' ? true : false
  end

  verify_login_page(type: login_type)

  aggregator = login_type ? Aggregator::PHONE : Aggregator::EMAIL

  get_and_enter_code(aggregator)
end

由于您引发了异常
Aggregator::ALL
案例,因此永远不会发生。

谢谢!老实说,Aggregator::ALL是在我删除了其他代码并在这里放了一个示例之后的产物,抱歉混淆谢谢!老实说,Aggregator::ALL是我删除了其他代码并在这里放了一个示例之后的产物,很抱歉造成混淆