開發(fā)ruby的工具<a >Atom</a> for mac
運行ruby程序在Atom中的話镜盯,安裝package Script,然后重啟Atom
然后再Command + I
運行.注意一定要重啟.
1. Click on Packages --> Commmand Palette --> Select Toggle.
2. Type Install Packages and Themes.
3. Search for Script and then install it.
4. Press Command + I to run the code (on Mac)
創(chuàng)造者:松本行弘
Ruby 是"程序員的最佳朋友"。
方便程序員换衬,性能沒有Java好
是開源的豆励,在 Web 上免費提供拗踢,但需要一個許可證尔觉。
通用的环戈、解釋的編程語言设易。
真正的面向?qū)ο缶幊陶Z言逗柴。
可以用來編寫通用網(wǎng)關接口(CGI)腳本。
可以被嵌入到超文本標記語言(HTML)顿肺。
可用于開發(fā)的 Internet 和 Intranet 應用程序戏溺。
可以安裝在 Windows 和 POSIX 環(huán)境中。
可以很容易地連接到 DB2屠尊、MySQL旷祸、Oracle 和 Sybase。
1.編譯/執(zhí)行 Ruby 程序
puts "Hello World!";
2.Ruby 中文編碼
puts "你好讼昆,世界托享!";
輸出: invalid multibyte char (US-ASCII)
Ruby 使用用 ASCII 編碼來讀源碼,中文會出現(xiàn)亂碼
解決方法:
#!/usr/bin/ruby -w
# -- coding: UTF-8 -
- puts "你好浸赫,世界闰围!";
3.Ruby的命令行選項
4.Ruby 語法
所有的 Ruby 文件擴展名都是 .rb
Ruby 程序中的空白
a + b 被解釋為 a+b (這是一個局部變量)
a +b 被解釋為 a(+b) (這是一個方法調(diào)用)
Ruby 程序中的行尾
Ruby 把分號和換行符解釋為語句的結(jié)尾。但是既峡,如果 Ruby 在行尾遇到運算符羡榴,比如 +
、-
或\
运敢,它們表示一個語句的延續(xù)校仑。
Ruby 標識符
標識符是變量、常量和方法的名稱传惠。Ruby
標識符是大小寫敏感的迄沫。這意味著 Ram
和 RAM
在Ruby
中是兩個不同的標識符。
保留字
略
Ruby 中的 Here Document
"Here Document" 是指建立多行字符串涉枫。
在 <<
之后邢滑,您可以指定一個字符串或標識符來終止字符串,且當前行之后直到終止符為止的所有行是字符串的值。
print <<EOF 這是第一種方式創(chuàng)建here document 困后。
多行字符串乐纸。
EOF
print <<"EOF"; # 與上面相同
這是第二種方式創(chuàng)建here document 。
多行字符串摇予。
EOF
print <<`EOC` # 執(zhí)行命令
echo hi there
echo lo there
EOC
print <<"foo", <<"bar" # 您可以把它們進行堆疊
I said foo.
foo
I said bar.
bar
Ruby BEGIN語句
puts "這是主 Ruby 程序"
BEGIN {
puts "初始化 Ruby 程序"
}
// 先打印"初始化 Ruby 程序"
Ruby END語句
最后執(zhí)行
Ruby 注釋
單行注釋:
#單行注釋
多行注釋:
=begin
多行注釋
多行注釋
=end
數(shù)據(jù)類型
Ruby
支持Number,String,Ranges,Symbols
數(shù)據(jù)類型汽绢,以及true
,false
和nil
這幾個特殊值
Number數(shù)值類型
- 整形Integer
整形分為2種,31位以內(nèi)Fixnum
超過為Bignum
- 浮點型
浮點數(shù)是Float類的對象.
算數(shù)操作
加減乘除指數(shù): + - * / **
字符串類型
Ruby字符串簡單地說是一個8
位字節(jié)的序列侧戴,它們是String
類的對象.
雙引號標記的字符串允許替換和使用反斜線符號宁昭,單引號標記的字符串不允許替換,且只允許使用 \\
和 \'
兩個反斜線符號.
轉(zhuǎn)義符酗宋,\
Ruby表達式
#{expr}
i.e.
puts "相乘 : #{24*60*60}"
// 結(jié)果為: 相乘 : 86400
字符串可以相加:
name = "Liao Maer"
puts name + ", Loving"
// -> Liao Maer Loving
數(shù)組
數(shù)組字面量通過[]
中以逗號分隔定義积仗,且支持range
定義.
- 數(shù)組通過
[]
索引訪問 - 通過賦值操作插入,刪除蜕猫,替換元素
- 通過
+
寂曹,-
號進行合并和刪除元素,且集合做為新集合出現(xiàn) - 通過
<<
號向原數(shù)據(jù)追加元素 - 通過
*
號重復數(shù)組元素 - 通過
|
和&
符號做并集和交集操作(注意順序)
i.e.
ary = ["fred", 10, 10.2, "this can be help", "last element"]
ary.each do |i|
puts i
end
哈希類型
哈希是在大括號內(nèi)放置一系列鍵/值對回右,鍵和值之間使用逗號和序列=>
分隔隆圆。尾部的逗號會被忽略。
hashs = colors = {"red"=> 0xf00, "green"=>0x0f0, "blue"=>0x00f}
colors.each do |key, value|
print key, " is ", value, "\n"
end
范圍類型
一個范圍表示一個區(qū)間.
范圍(1..3)表示 1,2,3
范圍(1...3)表示1,2
(10..15).each do |n|
print n, ' '
end
類和對象
Ruby是一種完美的面向?qū)ο蟮木幊陶Z言.
- 數(shù)據(jù)封裝
- 數(shù)據(jù)抽象
- 多態(tài)性
- 繼承
定義類:
class Customer
end
使用關鍵字 end 終止一個類翔烁。類 中的所有數(shù)據(jù)成員都是介于類定義和 end 關鍵字之間.
Ruby類中的變量
- 局部變量
方法中定義的變量渺氧,局部變量在方法外是不可用的。局部變量以小寫字母
或_
開始. - 實例變量
實例變量可以跨任何特定的實例或?qū)ο笾械姆椒ㄊ褂?實例變量可以從對象到對象的改變蹬屹。實例變量在變量名之前放置符號(@
). - 類變量
類變量可以跨不同的對象使用.類變量屬于類侣背,且是類的一個屬性。類變量在變量名之前放置符號(@@
)哩治。 - 全局變量
類變量不能跨類使用.如果您想要有一個可以跨類使用的變量.您需要定義全局變量秃踩。全局變量總是以美元符號($
)開始.
i.e.
class Customer
@@no_of_customers=0
end
我們?nèi)绻看蝿?chuàng)建Customer的instance,可以讓@@no_of_customers + 1
我們就可以統(tǒng)計有多少個Customer類的實例了
在Ruby中使用new方法創(chuàng)建對象
cust1 = Customer. new // .后面有沒有space效果都一樣
自定義方法來創(chuàng)建Ruby對象
略
Ruby類中的成員函數(shù)
在ruby中业筏,函數(shù)被稱之為方法.類中的每個方法以關鍵字def
開始憔杨,后面跟著方法名.
方法名總是以小寫字符開頭。在ruby中蒜胖,可以用關鍵字end來結(jié)束一個方法.
class Sample
def hello
puts "hello, world"
end
end
sample = Sample.new
sample.hello
Ruby類案例
class Customer
@@no_of_customers=0
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #{@cust_name}"
puts "Customer addr #{@cust_addr}"
end
def total_no_of_customeers()
@@no_of_customers += 1
puts "Total number of customers:#{@@no_of_customers}"
end
end
cust1 = Customer.new("1", "jack", "beijing")
puts cust1.display_details // 可以省略`()`,也可以加上消别,一樣的,為了簡單便捷台谢,可以不加
Ruby變量
變量是持有可被任何程序使用的任何數(shù)據(jù)的存儲文位置.
Ruby支持5中類型的變量.
- 一般以小寫字符寻狂,下劃線開頭。變量
- $ 開頭朋沮,全局變量
- @開頭蛇券,實例變量
- @@開頭,類變量,類變量被貢獻剛在整個繼承鏈中
- 大寫字母開頭:常數(shù)
Ruby全局變量
全局變量以$
開頭纠亚。未初始化的全局變量的值為nil
塘慕。在是永久-w
選項后,會發(fā)生警告.
Ruby的實例變量
實例變量以@
開頭
Ruby的類變量
類變量以@@
開頭蒂胞,并且必須初始化后才能在方法中使用.
引用一個沒有初始化的類變量會發(fā)生錯誤.類變量在他的類或者模塊的子類或者字母快中可以共享使用.
在使用-w
選項后图呢,重載類變量會產(chǎn)生警告.
塊
塊由大量的代碼組成。
需要給塊取個名稱骗随。
塊中的代碼總是包含在大括號
{}
內(nèi)蛤织。塊總是從與其具有相同名稱的函數(shù)調(diào)用。這意味著如果您的塊名稱為 test鸿染,那么您要使用函數(shù) test 來調(diào)用這個塊指蚜。
-
可以使用 yield 語句來調(diào)用塊。
block_name{ statement1 statement2 .......... }
yield
ie1.
def test
puts "in test method"
yield
puts "you back to test method"
yield
end
test {puts "you are in block"}
result:
in test method
you are in block
you back to test method
you are in block
ie2.
def test1
yield (5)
puts "在 test 方法內(nèi)"
yield (100)
end
test1{
|i| puts "you are in #{i} block"
}
result:
you are in 5 block
在 test 方法內(nèi)
you are in 100 block
塊和方法
通常使用 yield
語句從與其具有相同名稱的方法調(diào)用塊.
def test
yield
end
test{ puts "Hello world"}
如果方法的最后一個參數(shù)前帶有 &
牡昆,那么您可以向該方法傳遞一個塊姚炕,且這個塊可被賦給最后一個參數(shù)。如果 *
和&
同時出現(xiàn)在參數(shù)列表中丢烘,&
應放在后面。
def test(&block)
block.call
end
test { puts "Hello World!"}
#輸出: Hello World!
BEGIN 和 END 塊
每個 Ruby
源文件可以聲明當文件被加載時要運行的代碼塊(BEGIN
塊)些椒,以及程序完成執(zhí)行后要運行的代碼塊(END
塊)
Ruby的模塊
模塊(Module
)是一種把方法播瞳、類和常量組合在一起的方式。
- 模塊提供給了命名可敬避免名字沖突
- 模塊實現(xiàn)了mixin裝置
- 模塊不能被實例化
- 模塊沒有子類
- 模塊只能被另一個模塊定義
實例:
module Trig
PI = 3.141592654
def Trig.sin(x)
# .. end
def Trig.cos(x)
# .. end
end
就像類方法免糕,當您在模塊中定義一個方法時赢乓,您可以指定在模塊名稱后跟著一個點號,點號后跟著方法名石窑。
Ruby的require語句
require
語句類似于 C
和 C++
中的 include
語句以及Java
中的 import
語句牌芋。
使用 Ruby require 語句來加載模塊文件
文件引用:
$LOAD_PATH << '.' # 讓ruby知道必須在當前目錄中搜索被引用的文件
require 'trig.rb'
require 'moral' # .rb 不是必須的
y = Trig.sin(Trig::PI/4)
wrongdoing = Moral.sin(Moral::VERY_BAD)