ruby 性感的迭代操作

來源:互聯網
上載者:User

           ruby是一門可以用sexy來形容的語言,下面就列舉幾個sexy的迭代操作。

1. each簡單迭代       each是ruby中非常常見的遍曆操作,她是年老色衰的for直接替代品。如果需要索引,則可以使用each_with_index方法。
words=%w(good god ruby sexy girl run)words.each do |word|puts wordend

2. find 尋找單個元素     尋找到第一個合格元素,find。

words=%w(good god ruby sexy girl run)words.find do |word|word.start_with? 'r'end=> "ruby"

3. select 選取元素    選取所有合格元素,select。

words=%w(good god ruby sexy girl run)words.select do |word|word.start_with? 'r'end=> ["ruby", "run"]

4. reject 剔除元素    剔除部分合格元素,reject。

words=%w(good god ruby sexy girl run)words.reject do |word|word.start_with? 'r'end=> ["good", "god", "sexy", "girl"]

5. map 轉換元素    轉換每個元素,map。

words=%w(good god ruby sexy girl run)words.map do |word|word.capitalizeend=> ["Good", "God", "Ruby", "Sexy", "Girl", "Run"]

6. uniq 唯一化    剔除相等的元素,uniq。

words=%w(good god ruby sexy girl run run god Run)words.uniq=> ["good", "god", "ruby", "sexy", "girl", "run", "Run"]

   也可以在塊中指定比較的方法,自訂比較的對象。

words=%w(good god ruby sexy girl run run god Run)words.uniq do |w|w.downcaseend=> ["good", "god", "ruby", "sexy", "girl", "run"]

7. group_by 分組元素      分組元素,這個真的很sexy,group_by。     按首字母分組:

words=%w(good god ruby sexy girl Run)words.group_by do |w|w.capitalize[0]end=> {"G"=>["good", "god", "girl"], "R"=>["ruby", "Run"], "S"=>["sexy"]}

8. sort_by 排序元素     排序元素,sort_by。

words=%w(good god ruby sexy girl Run)words.sort_by do |w|w.lengthend=> ["Run", "god", "sexy", "ruby", "girl", "good"]

9. zip 組合元素    組合遍曆元素,zip。

words=%w(good god ruby sexy girl Run)numbers=(11..16)symbols=%w(+ - * / = %)words.zip(symbols,numbers)=> [["good", "+", 11], ["god", "-", 12], ["ruby", "*", 13], ["sexy", "/", 14], ["girl", "=", 15], ["Run", "%", 16]]

10. inject 累積元素     累積元素求值,這是我最喜歡的一個,inject。

numbers=(1..10)numbers.inject do |memo,value|memo=memo+valueend=> 55

    這是比較簡單的,舉個痛點的,如果需要將hash表 {a:1,b:2,c:3,d:1} 的鍵和值相互調換,即鍵變值,值變鍵,並且重複的值變成鍵後將原本的鍵變成列表形式的值。

tbl={a:1,b:2,c:3,d:1}tbl.inject({}) do |memo,(k,v)|memo[v]||=[]memo[v]<<kmemoend=> {1=>[:a, :d], 2=>[:b], 3=>[:c]}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.