作爲一個javaEE的程序員,在看關於ruby的資料的時候,不免會以一個對比的眼光來學習ruby,每看到一個和java不同的地方,就會產生某些想法,先記錄下來,待往後來驗證。另外,都說Ruby在不少地方都作的比java好,我也想知道Ruby比java究竟好在什麼地方。java
當我看到"Ruby!"*3這個表達式的返回值是"Ruby!Ruby!Ruby!"的時候,我不由想到,ruby的字符串應該不單單式支持+這一種運算符,還應該支持其餘的運算符,看來學習ruby應該重點學下ruby對字符串的處理,ruby應該更重視對字符串的額處理.程序員
當我看到 ruby 能夠以這種形式:1.upto(3) {|x| puts x} 來實現循環的時候,我以爲很難以想象,但仔細思考下,ruby無非是定義了這樣的一種語法:他使用戶能定義一種專門用於循環的方法,用戶將具體的循環體寫在後面的大括號中,而且定義了循環體接受參數的方式。這種方式有點相似於java中的回調函數,不過我仍是以爲java的回調函數的方式更整潔,邏輯性更強。不過顯然這種方式更間接,更容易使用。ruby
Ruby關於程序編碼的制定,規定了幾種方式。Ruby自己是腳本語言,在要解釋執行制定的程序的時候,要先肯定以什麼樣的編碼方式來讀取源文件的內容。文本文件沒有一種標註自身編碼方式的規範,真是太遺憾了。函數
Ruby經過在標識符中加入標點符號的方式來表示此表識符的不一樣含義:學習
Ruby關於字符串的操做:編碼
「<<」 符號會將右側的字符串追加到左側的字符串後面。該符號修改了左側的字符串,並不像java建立了一個新的對象並返回,因此該類操做並未產生大量的對象。spa
既然說Ruby是純面向對象的,那在學習其然和知識的時候,要先考慮下其相關的對象是什麼。設計
Ruby中的block能夠當作方法的一個特殊的參數來理解。orm
Ruby某教程中找到的,關於面向對象的經典的解釋:對象
在面向過程的程序語言裏,好比 C,注重的是程序邏輯,而不是數據自己。
那麼在面向對象的語言裏,對象是關鍵,也是重點。你能夠從對象獲得信息,可讓對象執 行特定的任務;可讓它執行某些運算並把結果返回給你;還可讓多個對象協同工做。
在設計類的時候,首先要想到,基於這個類的對象會有哪些屬性,以及這個對象能作什麼。 對象所具備的屬性也能夠叫實例變量,它表明的是對象的狀態。每一個類能夠有好多實例對象, 並且每一個對象所具備的狀態能夠是不一樣的。 而對象能執行的動做,咱們叫作方法,方法能改變對象的狀態。
ruby中能夠以這方式來定義屬性的訪問器:
attr_wirter :name
attr_reader :name,width,height
這種方式看起來比java簡單,但java中的getter方法和setter方法中能夠加入邏輯代碼,而這種方式的屬性訪問器,我暫時還不知道該如何實現上述的需求。
Ruby On Rails 中的ORM:
an ORM layer maps tables to classes, rows to objects, and columns to attributes of those objects. Class methods are used to perform table-level oper- ations, and instance methods perform operations on the individual rows.
Ruby On Rails 中的類繼承了ActiveRecord
Rails 的多對多關係用了中間表,解決了java中的n+1問題?????? 問下胡文傑