用戶:Zuohaocheng/Ruby編程教程 Part2

維基百科,自由的百科全書

準備工作[編輯]

打開終端(運行-cmd), 或者使用EMACS的eshell(M-x eshell), 推薦後一種方式.

然後, 在命令行中輸入irb, 進入ruby環境.

基本操作[編輯]

在EMACS中, 操作方法當然就是EMACS方法, 如Part1所述;

在終端中, 同樣使用類似EMACS的鍵綁定方式, 例如C-a為到行開頭等等, 只是略有不同.[1]

irb中, 輸入表達式即可得到該表達式的值, 例如

>> 1 + 1

=> 2

也就是說, ruby中的每一個表達式都有其自己的值. 注意, 要自己驗證代碼!

基本語句[編輯]

既然是程式語言, 還是要有幾個基本語句的.

集合[編輯]

集合論是數學的基礎, 所以也是編程的一個基本.

collection1 = [1, 3, 2]
collection2 = %w{zuo haocheng}

布爾值[編輯]

首先是布爾值, 也就是真/假的概念:

假:false, 或者nil

其它的都是真. 同時, 標準的真是true. [2]

條件語句[編輯]

針對單行的條件語句:

puts "if在true时执行" if true
puts "unless在false时执行" unless false

循環語句[編輯]

循環語句主要分為兩種:

條件式[編輯]

條件式是指, 在條件滿足的時候一直執行循環.

i=0
while i < 5
  puts i
  i += 1
end

也可以這麼寫:

(puts i; i+=1) while i < 5

遍歷式[編輯]

遍歷式是指, 對一個集合中的所有元素執行一次操作.[3]

for i in collection1
  puts i+1
end

當然也可以這麼寫[4][3]:

collection2.each { |str| puts str }

預告[編輯]

Part3: 函數

作業[編輯]

Part 1[編輯]

輸出:

01234567891011121314151617181920

不換行的輸出不用puts, 用print.

Part 1.1[編輯]

輸出:

0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-

別忘了"#{i}"語法.

Part 2[編輯]

輸出:

***********----------

11個*, 10個-

字符要用引號'或者"括起來.

Part 3[編輯]

輸出

----------*----------

10個-, 1個*, 10個-

Part 4[編輯]

輸出

---------***---------

9個-, 3個*, 9個-

Part 5[編輯]

輸出[5]

----------*----------
---------***---------
--------*****--------
-------*******-------
------*********------
-----***********-----
----*************----
---***************---
--*****************--
-*******************-
*********************

註釋[編輯]

  1. ^ 當然也可以設定為Vim的鍵綁定方式, 但是...
  2. ^ 請注意, 0是真.
  3. ^ 3.0 3.1 執行出錯了說明你前面的代碼沒做! 面壁去!
  4. ^ Ruby的語法是很靈活的
  5. ^ 這題用ruby的簡單程度令人髮指...
    1.upto(21){|i| puts ('*' * i).center(21, '-') if i.odd?}
    

    請將上述代碼的含義解釋清楚.