ruby基礎語法

首發:我的博客,更新&糾錯&回覆git

學不一樣語言,常將它們的基礎語法搞混,例如if後面有沒有(),後面是then仍是:仍是{,結尾是end仍是}……github

這種事情毫無技術含量又毫無樂趣可言,但極大地影響流暢度,因此此次再看ruby語法,決定把基礎語法記下來,方便之後查看。正則表達式

代碼放到了這裏,目前只有ruby,待之後用別的語言時再陸續添加。c#

內容以下,都是最基礎的用法,須要時一看就明白。數組

#參考:《Ruby徹底自學手冊》第三章、第四章
#常量大寫字母開頭,變量小寫字母開頭
CHANG_LIANG = 1
bian_liang = 2
bian_liang = "2"#弱類型
##分支控制
#if
if 2 > 1 then
    #
elsif 2>2 then
    #
else
    #
end
#if後置
puts "if後置" if 2 > 1
#unless
unless 2 > 1 then
    #
else
    #
end
#case
case 1+1
when 2 then
    #
when 3 then
    #
else
    #
end
##循環控制
#while
while 1>2
    #
end
#until
until 1<2
    #
end
#for
for i in (1..3)
   #
end
#foreach的另外一種寫法
(1..3).each do |i|
    #能夠用break和next控制,next至關於其餘語言的continue
end
##面向對象
module MyModule#定義模塊
    #定義類
    class MyClass#類名首字母大寫
        attr_accessor :myAttr#定義實例變量
        def initialize
            @myAttr2 = "@定義的實例變量"
        end
        public#訪問控制級別public/protected/private
        def myMethod#定義實例方法
            puts "在實例方法中輸出" + myAttr + @myAttr2
        end
    end
    #繼承
    class MySubClass < MyClass
    end
    #定義模塊方法
    def moduleMethod
        puts "MyModule的模塊方法"
    end
end#模塊定義的end
#使用
myClass = MyModule::MyClass.new#實例化對象
myClass.myAttr = "實例變量的值"#爲實例變量賦值
myClass.myMethod#調用實例方法
#動態添加方法
def myClass.newMethod
    puts "動態添加的方法"
end
myClass.newMethod
#加載另外一個文件中聲明的模塊中的類
load 'ruby_another_module.rb'
anotherClass = AnotherModule::AnotherClass.new#另外一個文件中聲明的對象
anotherClass.print#調用其方法
#混入
class UseMixin
    include MyModule
    extend MyModule
end
UseMixin.new.moduleMethod#include語句的做用,成爲類的實例方法
UseMixin.moduleMethod#extend語句的做用,成爲類的類方法
##代碼段
def blockMethod#調用代碼段的方法,其中yield表示運行代碼段
    yield
end
blockMethod {puts "匿名代碼段"}
#帶參數的代碼段
def blockMethodWithParam(arg, &b)#定義顯式使用代碼段的函數
    b.call arg
end
block = Proc.new{|x| puts x}#定義非匿名代碼段
blockMethodWithParam("非匿名代碼段", &block)#使用非匿名代碼段
blockMethodWithParam("也能夠這樣使用"){|x| puts x}
##異常處理
begin
    #正常代碼運行的地方
rescue Error#至關於其餘語言的catch
    #進行一些調整
    retry#從新嘗試執行
ensure
    #至關於其餘語言的finally,不管如何都會運行的地方
end
##基本類型
#整數
a=123_456#能夠加下劃線
b=0b101010#二進制
c=0123#八進制
d=0xaa#十六進制
e=?a#ascii碼
puts d
#浮點數略
#字符串
str = "hello, world"
str = %{你好, "world"}#方便含有引號的內容
str[0] = "我"
puts str
#符號略
#區間
(1..3).each{|a| puts a}
#數組
[1,2,3].each{|a| puts a}
#字典
map = {"鍵甲"=>"鍵甲的值", "鍵乙"=>"鍵乙的值"}
puts map["鍵甲"]
#正則表達式
"ab12cd".scan(/\d/){|m| puts m}#正則表達式字面量
puts /\d/.match("ab12cd")[0]#match方法

長期歡迎項目合做機會介紹,項目收入10%用於酬謝介紹人。新浪微博:@冷鏡,QQ:908789432ruby

相關文章
相關標籤/搜索