ruby 雜項
来源:互联网 发布:装修监理必知 编辑:程序博客网 时间:2024/05/01 17:54
本章處理一些實際問題.
語句定界符
有些語言需要一定類型的標點,一般會是分號(;)來結束程序的每一語句.Ruby卻採用了shell里的sh和csh的方便做法.一行中的多個語句由分號分開,但在行尾分號卻並不需要;一個換行被看作一個分號.如果行以反斜杠(\)結束,隨後的換行將忽略;這就允許你的單個邏輯行可以跨越數行.
注釋
為什麼寫注釋?雖然良好的代碼可自成文檔,但那種自以為別人能看懂並按你的方式很快去理解的想法是錯誤的.除此之外,你自己在離開數天後也會是另一個人;一段時間後我們忘了我們還未修補或增強程序中的哪些部分,你會說,我知道我寫了這個的,但我究竟寫的是些什麼?
一些有經驗的程序員會相當正確地指出,矛盾的和過期的注釋比沒有強.當然,有了注釋並不意味著代碼的可讀性;如果你的代碼不清晰,它也許是多蟲的.當你學習Ruby的時候,你會發現自己需要更多的注釋;然後當你可以通過更簡單,優雅,可讀的代碼來表達思想時,它們就會減少.
Ruby遵從一些普遍的書寫習慣,用井號(#)表示注釋的開始.跟在#號後面直到#號這行結束為止的代碼都將被解釋器忽略.
同時,為了方便寫大塊的注釋, Ruby解釋器省略以"=begin"和"=end"開始的行中間的一切.
#!/usr/bin/env ruby
=begin
**********************************************************************
This is a comment block, something you write for the benefit of
human readers (including yourself). The interpreter ignores it.
There is no need for a '#' at the start of every line.
**********************************************************************
=end
組織你的代碼
Ruby讀到什麼就處理什麼.沒有編譯處理;如果有什麼還沒讀到,就被簡單地認為未定義.
# this results in an "undefined method" error:
print successor(3),"\n"
def successor(x)
x + 1
end
這並不是像一開始認為的那樣,強迫你以從上至下的方式組織你的代碼.只要你確保其在調用前將被定義,當解釋器遇到一個方法定義時,它能安全地接受暫未定義的引用.
# Conversion of fahrenheit to celsius, broken
# down into two steps.
def f_to_c(f)
scale(f - 32.0) # This is a forward reference, but it's okay.
end
def scale(x)
x * 5.0 / 9.0
end
printf "%.1f is a comfortable temperature.\n", f_to_c(72.3)
所以,一方面看起來比使用Perl或Java要稍稍不方便一些,但卻沒有寫C那麼嚴格(要求你永遠維持所指的部分排序).將最高層的代碼放在源文件的最後總是可行的.即使這樣也比看見時要好的多.一個明智而無痛苦的好辦法是將main定義在文件頂端,再在底端調用它.
#!/usr/bin/env ruby
def main
# Express the top level logic here...
end
# ... put support code here, organized as you see fit ...
main # ... and start execution here.
Ruby也提供了將複雜程序分割為可讀,可重用,邏輯相關的大塊的工具.我們已看到用 include 來訪問模塊.你將發現 load 和 require 也很有用.load的作用類似於文件的複製加粘貼(和C的#include處理器指令相似).require更複雜,僅在需要時才載入,而且最多載入一次.load和require還有其它一些區別;在語言手冊,FAQ中可找到更多信息.
就是這些了...
這個教程應該足夠幫助你開始編寫Ruby程序了.隨著問題的深入,你可以深入參考手冊.FAQ和庫參考也是很重要的資源.
祝好運,編程快樂!
語句定界符
有些語言需要一定類型的標點,一般會是分號(;)來結束程序的每一語句.Ruby卻採用了shell里的sh和csh的方便做法.一行中的多個語句由分號分開,但在行尾分號卻並不需要;一個換行被看作一個分號.如果行以反斜杠(\)結束,隨後的換行將忽略;這就允許你的單個邏輯行可以跨越數行.
注釋
為什麼寫注釋?雖然良好的代碼可自成文檔,但那種自以為別人能看懂並按你的方式很快去理解的想法是錯誤的.除此之外,你自己在離開數天後也會是另一個人;一段時間後我們忘了我們還未修補或增強程序中的哪些部分,你會說,我知道我寫了這個的,但我究竟寫的是些什麼?
一些有經驗的程序員會相當正確地指出,矛盾的和過期的注釋比沒有強.當然,有了注釋並不意味著代碼的可讀性;如果你的代碼不清晰,它也許是多蟲的.當你學習Ruby的時候,你會發現自己需要更多的注釋;然後當你可以通過更簡單,優雅,可讀的代碼來表達思想時,它們就會減少.
Ruby遵從一些普遍的書寫習慣,用井號(#)表示注釋的開始.跟在#號後面直到#號這行結束為止的代碼都將被解釋器忽略.
同時,為了方便寫大塊的注釋, Ruby解釋器省略以"=begin"和"=end"開始的行中間的一切.
#!/usr/bin/env ruby
=begin
**********************************************************************
This is a comment block, something you write for the benefit of
human readers (including yourself). The interpreter ignores it.
There is no need for a '#' at the start of every line.
**********************************************************************
=end
組織你的代碼
Ruby讀到什麼就處理什麼.沒有編譯處理;如果有什麼還沒讀到,就被簡單地認為未定義.
# this results in an "undefined method" error:
print successor(3),"\n"
def successor(x)
x + 1
end
這並不是像一開始認為的那樣,強迫你以從上至下的方式組織你的代碼.只要你確保其在調用前將被定義,當解釋器遇到一個方法定義時,它能安全地接受暫未定義的引用.
# Conversion of fahrenheit to celsius, broken
# down into two steps.
def f_to_c(f)
scale(f - 32.0) # This is a forward reference, but it's okay.
end
def scale(x)
x * 5.0 / 9.0
end
printf "%.1f is a comfortable temperature.\n", f_to_c(72.3)
所以,一方面看起來比使用Perl或Java要稍稍不方便一些,但卻沒有寫C那麼嚴格(要求你永遠維持所指的部分排序).將最高層的代碼放在源文件的最後總是可行的.即使這樣也比看見時要好的多.一個明智而無痛苦的好辦法是將main定義在文件頂端,再在底端調用它.
#!/usr/bin/env ruby
def main
# Express the top level logic here...
end
# ... put support code here, organized as you see fit ...
main # ... and start execution here.
Ruby也提供了將複雜程序分割為可讀,可重用,邏輯相關的大塊的工具.我們已看到用 include 來訪問模塊.你將發現 load 和 require 也很有用.load的作用類似於文件的複製加粘貼(和C的#include處理器指令相似).require更複雜,僅在需要時才載入,而且最多載入一次.load和require還有其它一些區別;在語言手冊,FAQ中可找到更多信息.
就是這些了...
這個教程應該足夠幫助你開始編寫Ruby程序了.隨著問題的深入,你可以深入參考手冊.FAQ和庫參考也是很重要的資源.
祝好運,編程快樂!
0 0
- ruby 雜項
- ruby
- ruby
- ruby
- Ruby
- Ruby
- Ruby
- ruby
- ruby
- ruby
- Ruby
- RUBY
- ruby
- Ruby
- ruby
- Ruby
- ruby
- ruby
- Ruby 中$開頭的全局變數、內部變數、隱藏變數介紹
- 数组-13. 螺旋方阵(20)
- 变态跳台阶
- 在TCP/IP网络中,为各种公共服务保留的端口号范围
- Ruby self在不同環境的含義
- ruby 雜項
- Ruby中使用Block、Proc、lambda實現閉包
- Android Studio 1.2正式版发布,要如何更新? Please check network connection and try again.
- nyoj27 水池数目
- ruby 簡單例子
- linux 命令系列之 awk命令(56)
- iOS面试题
- 使用Ruby re模塊創建複雜的正則表達式
- ruby 數組使用教程