存錢筒-線上日文教室
關於部落格
五十音不等於我們的注音
  • 44938

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

Ruby學習Memo(持續更新)

Ruby,我對這個程式語言感到有興趣,它讓我擺脫傳統程式設計框架的限制,它的語法自由、簡潔有力,在開發上的心情好了許多,其物件的概念....它什麼都是物件,例如你要做5次迴圈,以一般傳統的寫法是
for(a=0;a<5;a++) cout << "Hello";

但在ruby,它的寫法更直覺

5.times do
puts "Hello"
end

是不是很簡單....,因為數字5 也是物件...(字串、浮點數...反正什麼都是物件啦Orz),另外它還一些動態綁定的特性像是以下定義了一個Bike類別,裡面有一個小bike,
class Bike
  def bikes()
    puts "2 wheels"
    end 
end

b=Bike.new
b.bikes()
這樣它就會在螢幕上秀出一個 2wheels的字樣囉

但如果今天,這台小bike需要進化成四輪車怎麼辦,傳統的做法就是到大Bike這個class裡面去定義一個car

但是在ruby裡這樣做就可以了
class Bike
  def bikes()
    puts "2 wheels"
    end 
end

b=Bike.new
b.bikes()

def b.cars()
  puts "4 wheels"
end


b.cars()

看到了嗎,直接加在下面...,你不用回去宣告囉
這個看起來像是臨時宣告的東西只有b擁有,之後如果再用c=Bike.new宣告一個Bike,這個c 是不會有cars的功能可以用的,因為我們很多時候只需要某個物件多一個功能,而且只用一次,這個動態綁定很好用,你不用再回去翻.h檔之後再去實作,宣告之後直接寫了就可以拿來上戰場了,而且ruby有很多的framework,它可以各大程式語言做結合(像是php),其它的傳統程式言....據說也可以,我沒研究

以下是ruby學習memo


p類似puts用法
=~比對Regx字符
|x| 搭配each時使用,效用等同於for x in (1..10)裡的x
 $_ 與$~與~ 見如下Q1
 ()與$1..$n 在Regx裡使用()時,第n筆符合的值會放在$n
 $ 全域變數
 @ 類別的成員變數(enum,或Field的意思 )
 @@ 靜態類別變數
 大寫開頭 大寫開頭的是常數(const)
 = = =用於和..或...配合,值是否在區間內
<=>用於比較二字串或數字的差異程度
..值域區間,包含二邊區間,1..3表示1,2,3
...值域區間,不包含右區間,1..3表示1,2
*直接加在單一陣列前,有展開該參數的效果
  


Q1:   $_ 與$~與 ~
說明: $_可用來指定字串,接著在"下一行"使用 ~ 進行正規式比對,其結果存放在$~
        而$~存的是整個結果,如Regx內有數個符合之情形,使用$~[n]進行查看,$~等同於$~[0]

Q2:  |X| 為何物?
在Ruby裡有所謂的block,也就是區塊,|x|則是區塊迭代的元素(element)。

Q3: What is block?
而ruby裡的區塊使用二種方式表達,分別是{}及do..end ,在each迭代常看到do..end的用法即是其一,一般的function可使用yield這關鍵字來達成迭代的目的,因為在寫作可以常看到
def func(a)
      yield a
end

func(10){|d|
       puts d
}

yield occurs sometimes in a definition of an iterator. yield moves control to the block of code that is passed to the iterator (this will be explored in more detail in the chapter about procedure objects). The following example defines an iterator repeat, which repeats a block of code the number of times specified in an argument.









相簿設定
標籤設定
相簿狀態