Ruby基礎類型,動態特性,代碼塊

來源:互聯網
上載者:User

標籤:style   blog   ar   color   os   使用   sp   for   java   


#Ruby內建基礎資料類型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash#Numerice 1.分為Interger整數類。Interger又分為Fixnum和Bignum。#2.#Float浮點數#3.Complex複數。#Bury的動態特性 #1.動態執行字串形式的代碼 eval#2.動態獲得模組或類中的常量和變數的值#3.動態為類或對象添加方法#4.對為知變數和方法的動態處理#5.動態刪除定義#eval編譯並執行字串。javascript的eval=beginclass_eval 在類的上下文範圍內將字串作為代碼編譯執行module_eval 在類或者模組的上下文範圍內將字串作為代碼編譯執行instance_eval 是在執行個體的上下文範圍內編譯執行=endclass String PI="fjskdjf" def dosome(n) self[0,n]+(self.size > n ? ".." : "")#空格不可忽略=_=|| end for i in [5,6,7,8] module_eval "def dosome_#{i} dosome(#{i}) end " endendputs "sdfsdf".dosome_5puts "sdfdsfsdf".dosome_6puts "gsfsdf".upcase puts "sdfsdf".send("upcase")#send方法動態調用對象的方法#puts "sadfd".methods#puts String.methods #擷取對象的所有方法名#instance_methods 返回所有公開的執行個體方法名,protected_methods返回的是受保護的方法名puts String.method_defined?(:upcase)#檢查對象是否定義了某執行個體方法puts "String".respond_to?(:upcase)#檢查對象是否能相映某執行個體方法的調用 puts String.const_get("PI")#根據常量的名稱擷取模組貨類中常量的值puts String::PI#const_missing,method_missing 方法,當對象調用不存在的方法或者常量的時候可以自訂返回的錯誤資訊。array=[1,3,4,5,22,33]array<<[1,44,5,6,7]#添加元素array.push([333,1234,1233333])#添加元素array.each { |item| puts item}
lambda和proc,block
def test(arg,arg2,&block)  #把方法的參數處理後傳遞給代碼塊的參數  yield arg+arg2,"代碼塊的第二個參數"#佔了兩個位,所以下面調用都會輸出2次,代碼塊其實是Proc對象  yield arg+arg2,"第二個參數"#這裡的yield其實就相當與下面的作用  block.call(arg+arg2,"proc對象第二個參數")end#test(11) {puts "yield佔位"}#test do#  puts "今天是個好日子"#end#代碼塊 的兩種建立方式{ 代碼 } ,do 代碼  endtest("啥玩意兒","恩德") {|x,y| puts x+y}block=Proc.new{|o,x| puts o+x+"Proc方法"}test("啥啥","正規軍",&block)#代碼塊的參數用|參數|傳遞。yield (x,y)給代碼塊傳遞參數#使用proc方法的好處是能感覺到給方法傳遞了代碼塊參數,proc對象做方法傳遞是要加上&符號def f0()  p = Proc.new { return 0}  p.call  1enddef f1()  l = lambda { return 0}  l.call  1endf0 # 返回0f1 # 返回1#如果你能夠理解proc在行為上更像block,lambda其實就是方法只不過是匿名的,那麼你對上面的結果不會感到驚訝。#如果把f0,f1做一些修改,就更容易理解上面的結果了。def f0()  return 0  1enddef f1()  def __f1    return 0  end  __f1  1endf0 # 返回0f1 # 返回1
 異常處理
def extest(x,y)  begin#try  z=x/y  rescue =>err#catch    puts err     #retry 恢複重來  ensure#finaly  puts "操作完畢"  end  endextest(1,0)

 

Ruby基礎類型,動態特性,代碼塊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.