2014-02-22 61 views
-2

第一個代碼有效,但我不明白爲什麼第二個代碼沒有。任何洞察力將不勝感激。我知道在這個例子中我真的不需要一個數組,我只是想爲了學習而努力。Array與模運算符不起作用

def stamps(input) 
    if input % 5 == 0 
    puts 'Zero!' 
    else 
    puts 'NO!' 
    end 
end 

print stamps(8) 

但這不工作:

array_of_numbers = [8] 

def stamps(input_array) 
    if input_array % 5 == 0 
    puts 'Zero!' 
    else 
    puts 'NO!' 
    end 
end 

print stamps(array_of_numbers) 
+2

沒有爲數組定義沒有''%方法。你如何期待你的第二個例子工作? – toro2k

+1

那麼,你期望第二個例子中的代碼能做什麼?如果陣列中同時存在8 *和* a 5,該怎麼辦?你期望你的代碼做什麼? – Ajedi32

+0

我爲我的無知道歉,謝謝你們向我展示我的方式錯誤,我很感激! –

回答

0

因爲input_array是一個數組,圖8是一個數字。使用first來檢索數組的第一個元素。

array_of_numbers = [8] 

def stamps(input_array) 
    if input_array.first % 5 == 0 
    puts 'Zero!' 
    else 
    puts 'NO!' 
    end 
end 

print stamps(array_of_numbers) 
0

下面的函數的情況下,工作原理是輸入數字或數組:

def stamps(input) 
    input = [input] unless input.is_a?(Array) 
    if input.first % 5 == 0 
    puts 'Zero!' 
    else 
    puts 'NO!' 
    end 
end