有没有办法将输入参数设置为一系列值?

时间:2014-10-17 02:05:07

标签: ruby

我定义了一个采用单个参数的方法:

def numbers(int)

end

我想要一个条件语句,根据一系列值来计算参数:

def numbers(int)
  if # int != (1,2,3,4,5,6,7,8,9,10) (not legal Ruby)
    puts "Cats"
  end
end

在这种情况下,如果int不等于12345,{{1 }},678910

示例:

puts "Cats"

如何设置这样的范围?我尝试过做def numbers(11) => "Cats" ,但这没有用。

4 个答案:

答案 0 :(得分:5)

仅仅因为:

def numbers(i)
  puts "Cats" unless (1..10) === i
end

numbers(3)
numbers(11)
  #=> Cats
numbers(0)
  #=> Cats

答案 1 :(得分:2)

您可以使用Range s:

def numbers(int)
  puts 'Cats' unless (1..10).include? int
end

numbers 11
# Cats

.....运算符用于创建范围文字。前者包括最后一个值,后者排除它。

1..10     # inclusive range; corresponds to the [1,10] interval
1...10    # exclusive range; corresponds to the [1,10) interval

答案 2 :(得分:1)

另一种(更易读)的方法是使用between

def numbers(int)
  puts 'Cats' unless int.between?(1, 10)
end

numbers(3)
numbers(11)
  #=> Cats
numbers(0)
  #=> Cats

答案 3 :(得分:0)

def numbers(int)
  case int
  when 1..10
  else
    puts "Cats"
  end
end