Ruby七天入門(3 Mixin,集合,檔案操作)

來源:互聯網
上載者:User

標籤:ruby

DAY 3

學習進入第三天,今天計劃學習模組,集合以及簡單的檔案操作。

3.1Mixin 模組

物件導向語言使用繼承,來將行為傳播到相似的對象上。具體到語言,C++使用的是多繼承,但是過於複雜,Java採用介面的方式,而Ruby則選擇使用了模組,先來看下代碼:

module ToFile    def filename        "object_#{self.object_id}.txt"    end    def to_f        file = File.open(filename,‘w‘)             file.write(to_s)    endendclass Person    include ToFile    attr_accessor:name    def initialize(name)        @name = name    end    def to_s        name    endenda = Person.new(‘Lee‘)puts a.name,a.to_s,a.to_f

我們定義了一個ToFile的module模組,而在類Person裡面include了它(感覺有點像是C++中的include)。

  • 通過這樣的include,Person類直接具有了ToFile的能力,而且他們建立了某種關係,使得在ToFile中也可以調用Person類裡面的方法。通過先定義類的主要部分,然後通過模組添加額外的能力,這種隨插即用式的做法顯然相當靈活,這種做法我們稱之為mixin。
3.2 集合操作

集合用法並無什麼特別之處,無非就是一些方法的使用:

puts ‘begin‘<=>‘end‘a=[4,5,2,1]a= a.sortputs aputs a.any? { |i| i>6  }puts a.all? { |i| i>0 }puts a.collect { |i| i*2 }puts a.select { |i|i%2==0  }puts a.maxputs a.member?(2)
  • <=>被人們叫做太空船操作符,它比較a、b兩運算元,b較大返回-1,a較大返回1,相等返回0。
  • 只要集合中任一元素條件為真,any?就返回true;只有集合所有元素條件為真,all?才返回true。
  • 只要對應的類實現了太空船操作符,就可以調用sort方法排序
  • collect和map方法把函數應用到每個元素上,並返回結果數組
  • find方法找到一個合格元素,而select和find_all方法均返回所有合格元素。
3.3 檔案操作

我們在3.1中已經使用了檔案的寫入,檔案的讀取也很簡單:

File.open("tree.rb", "r") do |file|    file.each_line("\r\n"){|line| puts "#{line.to_s}"}end

上面代碼使用了代碼塊,而如果不使用代碼塊,需要手動close檔案。

file = File.open("tree.rb", "r") file.each_line("\r\n"){|line| puts "#{line.to_s}"}file.close

我們也可以使用更簡單的IO類:

IO.foreach("tree.rb"){|line| puts line}
3.4 今日實踐

寫一個簡單的grep程式,把檔案中出現某片語的行全都列印出來,並輸出行號。

def grep(filename,match)    line_num=0    IO.foreach(filename)do|line|         line_num=line_num+1        puts line_num.to_s+" "+line if line.match(match)    end endgrep("tree.rb",/[Tt]ree/)

Ruby七天入門(3 Mixin,集合,檔案操作)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.