2011-12-20 69 views
-6

我需要一些幫助,下面:發送數字並返回一個數組中的Ruby

  1. 的方法創建一個基於輸入參數
  2. 返回來自該方法數組的新陣列
  3. 輸出數組的內容最優雅?


mycontroller.rb

def test(num) 
    #take the number and create a new array and return the array with the numbers. 
    #example input: 5 
    #output: array with 5 indexes and values of [1,2,3,4,5] 
end 

# output the contents of the array 
i = 0 
while i < 5 
    puts test(i) 
end 

謝謝!

+0

如果這不是問題,那麼你需要回到小學去找出「問題」的定義是什麼。這不是功課。我正在學習Ruby,需要幫助理解它。 – EverTheLearner 2011-12-20 23:56:37

+4

然後問一個問題。你有三個不相關的需求列表,這並不構成問題,Stack Overflow絕對不會爲你編寫代碼。 – meagar 2011-12-21 00:00:09

回答

3

可以使用ruby ranges此:

list = (1..num).to_a 

要打印的陣列使用inspect方法,即

puts list.inspect 
+0

+ +1爲平凡的任務解決方案。 – 2011-12-20 23:59:39

+0

'puts foo.inspect'和'p foo'是一樣的嗎? – 2011-12-21 00:22:28

+0

@JörgWMittag,它是一樣的。如果用戶想要進一步修改這個漂亮的字符串,'foo.inspect'就方便了。例如:'puts「列表的內容是#{foo.inspect}」' – 2011-12-21 00:46:21

1

像這樣的東西?

def test(num) 
    1.upto(num).to_a 
end 

以及輸出:

puts test(5).join(', ') # outputs "1, 2, 3, 4, 5" 
0

關於這個定義有很多可行的方法。

我總是喜歡告訴初學者編寫的代碼,他們可以讀到這樣一本書,用最容易理解的語言的方法和類,在這種情況下,我會建議:

def num_array(num) 
    array = Array.new 
    count = 1 
    num.times { 
     array << count 
     count = count + 1 
    } 
    return array 
end 

,並與檢查:

i = 1 
while i <= 5 
    new_array = Array.new 
    new_array = num_array(i) 
    puts new_array.inspect 
    i = i + 1 
end 

是我提供可以簡化很多,但至少已經閱讀教程上的Ruby任何初學者應該能夠理解並複製上面的代碼中,一旦他們的代碼示例舒適的語言,他們可以開始製作更改爲更復雜的語法。

像交換i = i + 1i += 1

或將以上全部換成list = (1..num).to_a

相關問題