[Rails學習之路]初識Ruby(一)

Ruby是一門動態的、強類型的、純面向對象的編程語言。它和Python很是類似,但比Python面向對象更加完全、使用更加靈活、語法更加複雜、也更爲有趣。
拋開作事情到底應該有多少種方法這個問題,我相信不止我一我的是爲了學習Rails才學習Ruby。每當我拿起Django、Flask或者Python的時候,就會聽到有人在說Ruby on Rails。
因而我決定今天開始學習Rails。第一天先來簡單學習一下Ruby。編程

數據類型

首先,由於Ruby的純面向對象的特徵,不存在Java中的「原始數據類型」這種說法。Ruby中內置的幾種數據類型也是對象,和其餘的對象並沒有差異。數組

  • 數值Numericapp

    包括整數Int和浮點Float
  • 字符串Stringless

    • Ruby中的字符串也有單引號、雙引號、三引號這三種包裹的方式。
    • Ruby中不存在字符類型。只有長度爲1的字符串。
    • 求字符串長度?str.length而不是len(str)
    • 比較字符串的方法和Java近乎相反。==比較字符串的值,而equal?比較對象是否相同。
  • 符號Symbol編程語言

    變量、方法、類均可以表示成符號。如::method:variable
  • 布爾Booleanide

    取值爲truefalse。與Python不一樣的是,只有falsenil才爲假,其他均爲真,包括0''[]等。
  • 數組Arrayoop

    [1, 'apple', false]
  • 字典Hash學習

    ['Jan'=>1, 'Feb'=>2, ...]idea

類型之間的轉換也是面向對象的風格,如str.to_i,而不是int(str)。固然to_fto_s之類的也是有的。code

奇怪的符號

之前我一直以爲Objective-C差很少把鍵盤上的符號都用光了。如今我才知道,和Ruby相比算是小巫見大巫了。

  • $var:表示全局變量。如$stdin
  • @var:表示實例變量。
  • @@var:表示類變量。
  • :var:表示符號變量。
  • #{var}:表示在字符串中的佔位。如:

    name = "world"
    puts "Hello, #{name}!"
  • %var:用於格式化字符串。與Python用法相似。上面的例子能夠改寫爲:

    puts "Hello, %s" % name

除此以外,還有一個更奇怪的,雖然沒用什麼符號,但在Ruby中,首字母大寫表示常量。

輸入輸出

Ruby中putsprint經常使用來輸出。
puts在輸出後會自動換行,而print不會。
在輸出字符串時也能夠拼接:

a = "Hello, "
b = "World!"
puts a + b

在Python一般使用逗號,但Ruby中逗號會產生換行。

使用gets獲取用戶輸入,chomp用來去除多餘的空行。例:

print "What's your name? "
name = gets.chomp
print "How old are you? "
age = gets.chomp.to_i

讀寫文件的操做與Python大同小異。經常使用的方法有openreadwriteclose等。

判斷、循環和選擇

判斷語句有ifunlessif not)。
Ruby中有三元運算符x ? y : z,不須要用彆扭的y if x else z
循環語句有whileuntilwhile not)和loopwhile true)。
還有傳統的for循環:for x in list
Ruby風格的寫法:list.each do |x|
另外一種寫法:list.each {|x| ...}

控制循環的關鍵字有:

  • break
  • next (至關於continue)
  • redo 重作該次循環
  • retry 重作循環

我不知道最後這倆有什麼用?

選擇語句的例子:

case a
when 1..5
    puts "It's between 1 and 5"
when 6
    puts "It's 6"
when String
    puts "You passed a string"
else
    puts "You gave me #{a} -- I have no idea what to do with that."
end
相關文章
相關標籤/搜索