小编Mik*_*e C的帖子

使用Array的多个变量的Ruby case语句

我想比较一个case语句的多个变量,并且我正在考虑重写case equals operator(===)for Array是最好的方法.这是最好的方法吗?

这是一个示例用例:

def deposit_apr deposit,apr 
  # deposit: can be nil or 2 length Array of [nil or Float, String]  
  # apr: can be nil or Float     
  case [deposit,apr] 
    when [[Float,String],Float] 
      puts "#{deposit[0]} #{deposit[1]}, #{apr*100.0}% APR"
    when [[nil,String],Float] 
      puts "#{apr*100.0}% APR on deposits greater than 100 #{deposit[1]}"
    when [[Float,String],nil] 
      puts "#{deposit[0]} #{deposit[1]}"
    else 
      puts 'N/A' 
  end
end
Run Code Online (Sandbox Code Playgroud)

唯一的问题是Array case equals运算符不适用大小等于Array的元素.

ruby-1.9.2-p0 > deposit_apr([656.00,'rupees'],0.065)
N/A
Run Code Online (Sandbox Code Playgroud)

如果我覆盖它,但我不确定如果我做了什么我会破坏:

class Array
  def ===(other)
    result = true
    self.zip(other) {|bp,ap| result &&= bp === …
Run Code Online (Sandbox Code Playgroud)

ruby arrays equals case

3
推荐指数
1
解决办法
3049
查看次数

标签 统计

arrays ×1

case ×1

equals ×1

ruby ×1