第一個ruby程式

來源:互聯網
上載者:User

標籤:雜湊   關注   解釋   指令碼   代碼   res   scala   資料庫   oar   

老實說不是很喜歡去討論ruby和python的對比,似乎總是把兩個語言放在對立的位置上,我覺得沒有必要,同樣是動態語言,同樣是解釋型指令碼語言,很多特性都是互相影響的,語言本身也在不斷進化,我們更應該關注的是編程思想而不是語言本身。

說了一點題外話,之所以要求學ruby,主要就是因為有一本好書想讀,就是Paolo Perrotta的《Ruby元編程》,書看了一天,ruby文法學了半天,用irb搗鼓了一晚上,應該說跟python,scala都有很多相近的地方,因為沒有接觸Lisp,Haskell之類的函數程式設計語言,因此不好說跟他們怎麼樣,但是學了python再去學ruby是覺得非常輕鬆地。

書中星期二中有個問題挑戰,就是對DS和Computer類中的函數進行動態產生,好吧,我又犯老毛病了,書看一半,自己先幹,在看到define_method方法後用我自己的思路搗鼓了一個解決方案,還沒看書中的執行個體,先把代碼弄出來看看,以下就是我的第一個ruby程式:

# 資料來源定義,原應為關聯資料庫,這裡只是進行類比class DS  parts = ‘cpu‘, ‘mouse‘, ‘keyboard‘  # 臨時數組用於批量產生方法  parts.each do |part|    define_method "get_#{part}_info".to_sym do |id| # 產生三種裝置的資訊函數      "This is #{part} #{id}."    end    define_method "get_#{part}_price".to_sym do |id|  # 產生三種裝置的價格函數      parts.zip([150, 50, 40]).to_h[part] # 通過zip合并數群組轉換為雜湊結構再索引    end  endend# 電腦配件定義class Computer  def initialize(computer_id, data_source)  # 初始化id和資料來源    @id = computer_id    @data_source = data_source  end  parts = ‘cpu‘, ‘mouse‘, ‘keyboard‘  parts.each do |part|    define_method part.to_sym do      info = @data_source.send("get_#{part}_info".to_sym, @id)      price = @data_source.send("get_#{part}_price".to_sym, @id)      result = "#{info} ($#{price})"      return " * #{result}" if price >= 100 # 判斷價格是否高於100,加星號顯示      result    end  endendputs "DS methods: #{DS.instance_methods(false)}"puts "Computer methods: #{Computer.instance_methods(false)}"ds = DS.newcomputer = Computer.new(10, ds)puts computer.cpuputs computer.mouseputs computer.keyboard

 


第一個ruby程式

相關文章

聯繫我們

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