天天看點

Ruby文法學習筆記(1)

最近一直拿了一部分時間集中看Ruby方面的資料.當時因為出了Rails 架構 相關Ruby on Rails上應用也慢慢增多. 以前總是想拿出點時間來學習一下.不料前前後後拖了快一年. 鑒于網絡上關于Ruby資源大多為英文. 部分中文Ruby文法上教程完整的更是很少.Ruby隻是一門下一代動态開發語言.其實我更關注的是Ruby on rails上應用. 是以學習Ruby主要是為了Ruby on Rails開發應用打下基礎. 鑒于本人為初學者. 大部分資源來源于網絡和個人總結. 是以難免有些地方有些疏漏和了解上偏差. 還請各位指出 我會及時更正. 上來拍磚同志 也請收下留情.

注: 我是邊實踐變發現問題 邊解決. 有可能你看到文章顯得比較亂. 沒有完整思路頭緒.還請諒解.

A:Ruby Methor—ruby 中方法

<a href="http://blog.51cto.com/attachment/201201/173450554.png" target="_blank"></a>

輸入結果:"Good night! chenkai"

(1)Ruby中隻要每條語句單獨寫成一行. 就不必再語句最後加上分号. 也就說分号(;) 是或缺的. 這不同于C#和Java.

(2)"#***" #在ruby标注的單行注釋. 多行注釋如下:

<a href="http://blog.51cto.com/attachment/201201/173455160.png" target="_blank"></a>

方法定義關鍵字Def [同類,子產品定義後面會提到].  ruby不用C# 和Java常用{}大括号來劃分符合語句和定義(方法和類)主體邊界. 隻需在主體結束用關鍵字End結束即可.

(3)方法中定義變量:@nickname 是方法内局部變量.

Ruby的辨別名用來指向常量,變量,方法,類和子產品. 和C# java等都是區分大小寫的.Ruby使用一個約定來幫助它差別一個名字的用法:名字前面的第一個字元表明這個名字的用法。局部變量、方法參數和方法名稱應該用一個小寫字母開頭或者用一個下劃線開頭;全局變量用美元符作為字首 $;而執行個體變量用 @ 開頭;類變量用 @@ 開頭;類名、子產品名和常量應該用大寫字母開頭. 用法如下:

<a href="http://blog.51cto.com/attachment/201201/173501350.png" target="_blank"></a>

(4)puts 用法:

puts 是ruby内置函數. 它完整定義是 Puts()  把輸入參數輸出到控制台.并在後面添加一個新行 即換行.是以 如上 puts firstcustomer.getName() 完整寫法為:

puts(firstcustomer.getName()). 二者寫法輸出結果是一樣的. 是以這個語句其實調用兩個方法一個Puts()内置輸入函數和firstcustomer.getName()方法.

(5)字元串文本使用:

 Ruby定義的字元串定義同C#類似. 位于單引号或雙引号之間的字元序列.   但是ruby 單引号與雙引号存在差別:

A:單引号—ruby中幾乎不對單引号字元串做任何處理. 除了很少幾個特殊情況之外[後面有詳解].

B:雙引号—ruby則會做更多處理.首先查找字元串中的替代串[以反斜杠為開頭的字元序列例如: \n-換行]  替代串-在ruby中主要将其替換成對應的二進制值. 當然最常見替換串就是\n 替換成換行符.

第二項處理—表達式插補[Express interpolation] 字元串中#{express} 序列會被替換為express表達式的值. 用法:

<a href="http://blog.51cto.com/attachment/201201/173506652.png" target="_blank"></a>

其中定義方法中把傳入的值 通過#{name}解析的. 然後拼接字元串方式傳回值. capitalize()字元串處理方法 把參數值的首字母程式設計大寫.  也可以把一個整數按字元串方式輸出,.

<a href="http://blog.51cto.com/attachment/201201/173512249.png" target="_blank"></a>

輸出結果:

2

6轉換字元串

第二行中()括号作用是具有優先級.  to_s 則轉換成字元串. []至于ruby中字元使用以及邏輯判斷語句會在後面章節詳細列出]

B:Ruby Classes -Ruby中類

相對于ruby Method方法定義. Ruby類定義要注意地方比較多. Ruby是面向對象程式設計的OOP. 定義一個簡單Customer類:

<a href="http://blog.51cto.com/attachment/201201/173518746.png" target="_blank"></a>

本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/764892