首發:我的博客,更新&糾錯&回覆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方法