Rails熟了一點後就會發現其實大部分都是學會怎麼用它,卻很吃Ruby本身的概念

未來讓以後開發不會這麼吃力,來整複習一下好了 :D

Everything is Ruby is an object

Ruby 內皆為物件,無基本型別

# X.class,X.methods 的用法
123.methods #=> 123可用的method列表  
123.class   #=> Fixnum #知道class後就可以查doc  
true.class  #=> TrueClass  
nil.class   #=> NilClass  
> 2.even?
 => true
> 3.next
 => 4
> -1.abs
 => 1

##基本使用

# 各種常見型別
123.class #integer
42343243243243243242343242344234234234.class #bignum  
123.123.class #float  
123.class #string  
[].class #array  
{}.class  #hash  
:abc.class #symbol  
nil.class #nilClass  
true.class #TrueClass
false.class #FalseClass  

###輸出String的用法

# 輸出String的用法
123 + 345 + 333  
x = 18  
puts "your age is #{x}"  
puts \n\t #單引號 (無視內容,直接輸出)  
puts "\n\t" #雙引號 (換行)

Hash

# hash宣告方式
x = {"wer" => 123, "sdf" => 234}  
y = {:wer => 123, :sdf => 234}  
# symbol 拿來當key用  
:wer.object_id  # 在hash中key使用symbol會比string還相對快    

Nil/ False

ruby只有兩種東西為非 => nil / false 其他都為true

nil || false || 0   # 0    
nil && false && 0   # nil  

###判斷式

#####基本上if else

# if/else if/elsif/else unless/end
if size > 30  
  puts "winner"  
else  
  puts "loser"  
end

#####因為在ruby只有false及nil為非,所以當你要判斷該變數有沒有值時可以直接這樣寫

if name
  puts name
else
  puts "error"
end

#####後置判斷式,直接把if放後面

puts name if name # 當name有值時印出來,沒有值即略過
puts "error" unless name # 當name沒有值時印error

#####簡單的判斷式也可以寫成單行

# condition ? true : false
puts size > 30 ? "winner" : "loser"    
ruby的switch case寫法
case lang
when "java"
  puts "good"
when "python"
  puts "great!"
when "ruby"
  puts "perfect!"
else
  puts "WTF"
end

###迴圈

在ruby中比較少在用for跟while迴圈,大部分情況都使用each(iterator迭代器)

lang = ["ruby","python","java","c","php"]
for i in lang
  puts i
end

lang.each do |i|
  puts 'I love ' + i
end

[1,2,3,4,5,6].each do |i| end

3.times do
  puts 'Good Job!'
end

Reference: RailsFun - JokerCatz