2010年9月10日 星期五

[ Ruby 教學 ] Arrays and Iterators


參考至 這裡
這裡將以幾個簡單的例子介紹Ruby矩陣 (array)與 列舉(iterator)的用法:

範例一:
  1. globalWidth = 50  
  2. puts '========7.  Arrays and Iterators ========'.center globalWidth  
  3. names = ['Ada''Belle''Chris']  
  4.   
  5. puts names # puts names prints each name in the array names.  
  6. puts names[0]  
  7. puts names[1]  
  8. puts names[2]  
  9. puts names[3]  #  This is out of range. nil will be display  
  10. puts  
* 變數加上'[ ]'就變成矩陣, 並且矩陣內每個slot 沒有要求要是同一種類別如Integer或String.
* 如果給的slot超出矩陣大小, 則在ruby以 nil 代表 'nothing', 故puts 舉陣的slot若不存在, nil 會被輸出.


範例二:
  1. puts '========The Method each========'.center globalWidth  
  2. languages = ['English''German''Ruby']  
  3. languages.each do |lang|  
  4.   puts 'I love ' + lang + '!'  
  5.   puts 'Don\'t you?'  
  6. end  
  7.   
  8. puts 'And let\'s hear it for C++!'  
  9. puts '...'  
  10. puts ''  
  11. 3.times do  
  12.   puts 'Hip-Hip-Hooray!'  
  13. end  
  14. puts  
* 從這個例子看出 'each' 是矩陣的某個函數.
* 藉由 do-end 可以實現 iterator的功能.
* times 是 Interger類別的函數, 與 do-end合作可以實現 for loop


範例三:
  1. puts '========More Array Methods========'.center globalWidth  
  2. foods = ['artichoke''brioche''caramel',['inner1','inner2']]  
  3.   
  4. puts foods  
  5. puts  
  6. puts foods.to_s  
  7. puts  
  8. puts foods.join(', ')  
  9. puts  
  10. puts foods.join('  :)  ') + '  8)'  
  11.   
  12. 200.times do # Doing nothing 200 times is still doing nothing  
  13.   puts []  
  14. end  
  15. puts  
  16. favorites = []  
  17. favorites.push 'raindrops on roses'  
  18. favorites.push 'whiskey on kittens'  
  19.   
  20. puts 'favorites=' + favorites.join(', ')  
  21. puts 'favorites[0]=' + favorites[0]  
  22. puts 'favorites.last=' + favorites.last  
  23. puts 'favorites.length=' + favorites.length.to_s  
  24.   
  25. puts 'favorites.pop=' + favorites.pop  
  26. puts 'favorites=' + favorites.join(', ')  
  27. puts 'favorites.length=' + favorites.length.to_s  
  28. puts  
* 在上面例子Demo了矩陣的幾個方法如 push, pop與last.
* last只告訴矩陣的最後一個slot是什麼, 並不取出該slot, 但pop會取出.
* 使用join 可以在puts 矩陣時, 在每個slot間加入預分隔的字串或字符.
* 矩陣的length函數可以告訴該矩陣有多少個slot.


最後以一個簡單範例來練習矩陣的操做:
1. 用戶於console 輸入字串, 並用矩陣將之儲存, 並以loop持續這個動做.
2. 如果用戶輸入'exit' 或 'quit' 即離開輸入的loop
3. 在用戶離開輸入的loop後 將該矩陣排列後 輸出.

Hint. 可以利用矩陣的函數sort 進行排列.
  1. charc = ''  
  2. stringArray = []  
  3. while (charc != 'exit') && (charc != 'quit')  
  4.   puts 'Please give string:(exit or quit to leave)'  
  5.   charc = gets.chomp  
  6.   puts 'You give: ' + charc  
  7.   if (charc!= 'exit') && (charc != 'quit')  
  8.     puts 'Push array...'  
  9.     stringArray.push charc  
  10.   else  
  11.     puts 'About to leave!'  
  12.   end  
  13. end  
  14. puts 'You have given:'  
  15. puts stringArray.sort.join(', ')  
  16. puts stringArray.join(', ')  

This message was edited 2 times. Last update was at 11/09/2010 11:58:51

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...