ruby基礎語法


首發:個人博客,更新&糾錯&回復

學不同語言,常將它們的基礎語法搞混,例如if后面有沒有(),后面是then還是:還是{,結尾是end還是}。

這種事情毫無技術含量又毫無樂趣可言,但極大地影響流暢度,所以這次再看ruby語法,決定把基礎語法記下來,方便以后查看。

代碼放到了這里,目前只有ruby,待以后用別的語言時再陸續添加。

內容如下,都是最基礎的用法,需要時一看就明白。

#參考:《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:908789432


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM