Ruby是一門動態的、強類型的、純面向對象的編程語言。它和Python很是類似,但比Python面向對象更加完全、使用更加靈活、語法更加複雜、也更爲有趣。
拋開作事情到底應該有多少種方法這個問題,我相信不止我一我的是爲了學習Rails才學習Ruby。每當我拿起Django、Flask或者Python的時候,就會聽到有人在說Ruby on Rails。
因而我決定今天開始學習Rails。第一天先來簡單學習一下Ruby。編程
首先,由於Ruby的純面向對象的特徵,不存在Java中的「原始數據類型」這種說法。Ruby中內置的幾種數據類型也是對象,和其餘的對象並沒有差異。數組
數值Numeric
app
Int
和浮點Float
。字符串String
less
str.length
而不是len(str)
。==
比較字符串的值,而equal?
比較對象是否相同。符號Symbol
編程語言
:method
,:variable
。布爾Boolean
ide
true
或false
。與Python不一樣的是,只有false
和nil
才爲假,其他均爲真,包括0
、''
、[]
等。數組Array
oop
[1, 'apple', false]
字典Hash
學習
['Jan'=>1, 'Feb'=>2, ...]
idea
類型之間的轉換也是面向對象的風格,如str.to_i
,而不是int(str)
。固然to_f
、to_s
之類的也是有的。code
之前我一直以爲Objective-C差很少把鍵盤上的符號都用光了。如今我才知道,和Ruby相比算是小巫見大巫了。
$var
:表示全局變量。如$stdin
。@var
:表示實例變量。@@var
:表示類變量。:var
:表示符號變量。#{var}
:表示在字符串中的佔位。如:
name = "world" puts "Hello, #{name}!"
%var
:用於格式化字符串。與Python用法相似。上面的例子能夠改寫爲:
puts "Hello, %s" % name
除此以外,還有一個更奇怪的,雖然沒用什麼符號,但在Ruby中,首字母大寫表示常量。
Ruby中puts
和print
經常使用來輸出。
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大同小異。經常使用的方法有open
、read
、write
、close
等。
判斷語句有if
和unless
(if not
)。
Ruby中有三元運算符x ? y : z
,不須要用彆扭的y if x else z
。
循環語句有while
、until
(while not
)和loop
(while 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