Ruby 學習筆記-迴圈與迭代(Loop&Iteration)

為什麼要設迴圈?

因為重複的代碼可以不用一直寫,只要寫好一個迴圈就可以設定他跑十次,最後的結果是一樣的,但可以少寫很多 code。

迴圈種類

  1. for 迴圈
  2. while 迴圈
  3. loop 迴圈
  4. method 迴圈-Ruby 特有
  5. 迭代式迴圈

迴圈與迭代有什麼不同?

  • 迴圈:不斷的依據指定的條件重複執行某些指令。
  • 迭代:通常會有個對象,針對某個集合的每個元素做某些事。

迴圈寫法

  1. for 迴圈
    names = ["eddie","joanne","john","sherly"]
    for name in names
        puts name
    end
    #設一個變數name一圈一個把names裡面的東西印出來。

    for i in 1..10
        puts i
    end
  1. while 迴圈(小心變成無窮迴圈,條件設定要設好)
    x = 0
    while x < 10
        puts x
        x += 1  #改變條件
    end
    #一開始x設為0,當x小於10時會印出來0,在印出來後改變條件,變成x=1,一直重複直到x=10。

邪惡分身 until,while not = until

  1. loop 迴圈(break 一定要設好)
    i = 0
    loop do
        puts i
        i += 1
        break if i > 10  #break 結束這回合
    end
    #一開始設i為0,先印出來再改變變數,後設條件。
    #跟while差在一個先設條件符合條件在執行,loop是你先執行,條件不符在跳出。

do..end或是{}這個叫做 Block(程式碼區塊)

  1. method 式迴圈
    5.times do
        puts "hello,ruby"
    end
    #意思是我要印5次hello,ruby。

    1.upto(10) do |i|
        puts "hello,ruby #{i}"
    end
    #把數字1到10放進絕對值裡,再帶進${}裡,每次印出hello,ruby時後面的數字會從1到10跟隨印出結束。

    10.downto(1) do |i|
        puts "hello,ruby #{i}"
    end
    #把數字10到1放進絕對值裡,再帶進${}裡,每次印出hello,ruby時後面的數字會從10到1跟隨印出結束。
  1. 迭代式回圈
   names = ["eddie","joanne","john","sherly"]
   names.each do |name|
      puts name
   end
   #把names裡的元素丟出來給name這個變數,並把它印出來。

   names = ["eddie","joanne","john","sherly"]
   names.each.with_index do |name,x|
      puts "#{x} #{name}"
   end
   #把names裡的每個元素丟出來給name這個變數,再把每個元素的索引值丟給x這個變數,一起印出來。
comments powered by Disqus