ruby學習筆記《一》
看得再多也不如自己動手試,最近有閑就打算認真研究一下ruby語言了。Pragmatic programmer中說,需要一年學一門新語言一遍改造思想,去年淺淺的學了javascript的皮毛,今年可以看看ruby這 個有lisp之風的OO語言了。- 安裝環境
可惜得到的不是比較新的版本。skyscribe:~$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
skyscribe:~$ irb
irb(main):001:0> puts "hello"
hello
=> nil
不 過很快想起翻翻 wiki,還是用rvm方便的多。教程比較簡單,參考它的quick installation guide就可。第一次嘗試的時候用apt-get安裝了沒有purge,導致總是安裝到root用戶造 成“permission denied"的問題。
安裝好之后,所有的東西都在$HOME/.rvm下邊,比較干脆。
skyscribe:~$ rvm install 1.9.3
skyscribe:~$ rvm list
rvm rubies
ruby-1.9.3-p125 [ i686 ]
# Default ruby not set. Try 'rvm alias create default <ruby>'.
# => - current
# =* - current && default
# * - default
skyscribe:~$ rvm alias create default ruby-1.9.3-p125
Creating alias default for ruby-1.9.3-p125.
Recording alias default for ruby-1.9.3-p125.
Creating default links/filesskyscribe:~$ cat >> ~/.bashrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
^C
skyscribe:~$ bash
skyscribe:~$ rvm use 1.9.3
Using /home/skyscribe/.rvm/gems/ruby-1.9.3-p125
skyscribe:~$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]
- 熟悉和上手
ruby path_to_enlightenment.rb
koans 會遍歷每一個test case直到全部完畢,大概需要2個小時以上的時間方可全部完工。中間的注釋和THINK ABOUT的部分比較有意思,感悟比較深刻的是以下一些點:
- 完完全全的OO,所有東西皆為對象
- 兩種基本的collection,hash和array基本對應于python的dict和array
- 函數調用可以不必添加括號,除非可能引發歧義或者解析錯誤
- 函數參數可以包含block,支持lambda和closure
- bool類型更簡單,只有false和nil與false等價,其余全部是true
- 控制結構有unless
- 類定義是開放式的,便于非侵入式設計,當然也可以允許修改builtin
- 每一個對象都有object id
- symbol和string可以互相轉化構造
- method的調用可以用send 的方法發送message - proxy變得極度容易
- module可以被class include從而包含方法, 便于mixin設計
- instance variable和class variable 定義方便快捷
- regular expresion的和python極為相似
posted on 2012-02-19 15:58 skyscribe 閱讀(721) 評論(0) 編輯 收藏 引用 所屬分類: Linux 、Misc