2014-10-17 48 views
0

我定義一個只有一個參數的方法:有沒有辦法將輸入參數設置爲一系列值?

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是不等於123456789,或10puts "Cats"

例子:

def numbers(11) => "Cats" 

我怎樣才能建立一個範圍內也是這樣嗎?我試過!= (1..10),但那不起作用。

回答

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 
+0

而Rails中,你也可以這樣寫:'INT .in?(1..10)' – spickermann 2014-10-17 02:12:21

+0

無聊,但要做到這一點。 – 2014-10-17 02:56:32

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

只是因爲:

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

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

這比我的更直接。 – sawa 2014-10-17 03:07:15

+1

@sawa,你認爲我在哪裏得到了這個想法? – 2014-10-17 03:19:50

1

另一個(更易讀)的方式來做到這一點是通過使用between

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

numbers(3) 
numbers(11) 
    #=> Cats 
numbers(0) 
    #=> Cats 
相關問題