婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ruby基礎知識之方法、代碼段

Ruby基礎知識之方法、代碼段

熱門標簽:徐州網絡外呼系統哪個好 地圖標注賺錢項目注冊 湖州u友防封電銷卡 常德電銷平臺外呼系統軟件價格 百度地圖標注自定義圖片 高德地圖標注客服 電銷機器人廠商代理 白銀外呼paas系統 滴滴外呼系統

Ruby中的方法是一個有名稱的代碼塊,是與一個或多個對象關聯的參數化的代碼。調用時須給出方法名,接收者(所在對象),參數值,且最后一個表達式的值做為返回值。與Ruby方法相似的是代碼塊,它沒有名字,且調用時只通過迭代器或被間接調用。
 
(一)方法
(1)定義方法

定義方法就是

復制代碼 代碼如下:

def 方法名(參數列表)
方法體
end

最后一個表達式做為返回值返回,如果有值,則返回;無值則返回nil。可以省略return。
在類中定義的方法為實例方法,實例方法可以在類的實例對象上使用。如果是在一個特定的對象上定義方法,那么此方法就是一個單鍵方法,只能在這個對象上使用。

復制代碼 代碼如下:

class Test
  def instance_method_test(v)
    puts "#{v}: instance method"
  end 
end
 
t1=Test.new
t2=Test.new
t1.instance_method_test("t1")
t2.instance_method_test("t2")
 
def t1.singleton_method_test(v)
  puts "#{v}:singleton method"
end
 
t1.singleton_method_test("t1")
#t2.singleton_method_test("t2")

在ruby中,方法一般小寫字母開頭,如果超過一個單詞,則由下劃線隔開(看習慣)。有意思的是方法名可以以等號、問號、嘆號結尾,且有不同的意義:以等號(=)結尾表示這是一個賦值方法(寫屬性);以問號(?)結尾表示一個斷言方法,可以回答調用者提出問題的值,例如判斷大小;嘆號(!)結尾表示是一個可變方法,可能會影響到對象的狀態,要小心使用。這三個符號很有意思,但它們不是必須的。

(2)取消方法

通過undef 方法名 可以取消方法。對于被繼承的方法,undef可以取消子類中的繼承來的方法,但不會取消父類中的此方法。

(3)方法參數

在參數中添加等號和值就可以為這一個參數設置默認值。如果參數有默認值,那么在調用方法時,可以為這個參數指定值或不指定值。

復制代碼 代碼如下:

def createRole(name,level=1)
  puts "role name is#{:name} level is #{level}"
end
 
createRole("way")
createRole("clound",5)

通過在參數前邊加星號(*),可以為方法指定為可變參數個數(數組參數),且指定的個數最多為一個。
復制代碼 代碼如下:

def add_Person(*users)
  puts users
end
add_Person("a1","a2")
add_Person("a1","a2","a3")

如果要把數組傳遞給方法,要在數組前加星號(*)。

(二)代碼塊
方法調用后可以緊跟一個代碼塊,關聯代碼塊的方法可以通過yield來調用。

復制代碼 代碼如下:

def showMessage(i)
  yield i*2
  print i
end
 
showMessage(5){|x|print "#{x}"}

代碼塊通過yield調用,也可以做為方法參數傳遞,但前提是這個參數前需要添加做為前綴且為最后一個參數。而此時它以一個proc對象傳遞,調用時不能通過yield調用,而是通過proc的call方法調用。另外,如果以顯示方式,即傳遞proc對象給方法,那方法定義的參數就不加前綴了。通過前綴,代碼塊可以與任何方法調用關聯起來,即使此方法沒有yield語句。任何方法調用都可以用參數作為最后一個參數。所有支持to_proc的方法都能用。
復制代碼 代碼如下:

#傳遞代碼塊,代碼塊參數須為最后一個,且添加前綴;且調用時用proc的call方法
def fun_block(i,b)
  b.call(i*2)
end
fun_block(2){|x|puts x}
 
#顯示傳遞proc對象。那么方法中proc對象部分的參數不加前綴
def fun_proc(i,b)
  b.call(i*2)
end
p=Proc.new{|x|puts x}
fun_proc(2,p)
 
c=[1,2,3,4,5,6]
b=c.select{|x|x%2==0}
p1=Proc.new{|x|x%2==0}
d=c.select(p1)
puts d

代碼塊是Ruby的一種句法結構,不是對象,但可以創建對象來表示一個代碼塊。根據對象的創建方式,分為proc或lambda。proc行為與代碼塊相似;lambda行為與方法相似,但它們都是Proc類的實例。
 
通過Proc.new創建一個proc,在1.9版本中,與proc方法為同義詞;通過lambda方法,創建一個lambda。lambda方法不帶參數,調用時段關聯一個代碼塊。
 
在ruby 1.9中,支持一種新的句法。將lambda換為->;將參數放到花括號外邊,小括號里邊;花括號中只保留表達式。(可以與.net3.*中的lambda比較:()=>{})
復制代碼 代碼如下:

#1.8k中
d1=lambda{|x|x+1}
puts d1.call(5)
#1.9中,將lambda換為->;參數放到花括號外邊,小括號里邊;花括號中只保留表達式
#與.net3.*中的lambda表達式很像()=>{}
d2=->(x){x+1}
d2.call(5)

這種新句法,使代碼簡潔,并使代碼段與ruby方法的統一,例如:設置參數默認值。
(三)閉包

ruby中的proc和lambda都是閉包(closure)。閉包表示一個對象既是一個可調用的函數,同時也是綁定在這個函數上的一個變量。從表面上解釋閉包就是:方法A內的方法B調用方法A的變量,并返回結果。方法B就是閉包。它的作用:一是B方法的變量可以在方法外使用;二是A方法中的變量可以安全使用;三是對B方法中的值進行緩存。
(關于閉包,可以查看相關文檔,我這里只是粗淺的認識。)

您可能感興趣的文章:
  • Ruby基礎知識之基本流程控制
  • Ruby基礎知識之數據類型
  • Ruby基礎知識之類

標簽:梧州 普洱 遼寧 荊門 三沙 張家界 永州 公主嶺

巨人網絡通訊聲明:本文標題《Ruby基礎知識之方法、代碼段》,本文關鍵詞  Ruby,基礎知識,之,方法,代碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby基礎知識之方法、代碼段》相關的同類信息!
  • 本頁收集關于Ruby基礎知識之方法、代碼段的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲自拍偷拍麻豆| 亚洲乱码国产乱码精品精小说| 精品久久久久久综合日本欧美| 亚洲综合丁香婷婷六月香| 色婷婷久久综合| 久久久久久久久久久99999| 精品一区二区在线视频| 日韩欧美三级在线| 黄色精品一二区| 久久无码av三级| 国产不卡在线播放| 欧美激情一区二区在线| 色综合天天综合在线视频| 亚洲图片欧美一区| 久久国产生活片100| 久久久久88色偷偷免费| 亚洲国产精品一区二区www| 久久机这里只有精品| 国产成人在线色| 色婷婷激情综合| 成人免费视频播放| 国产日产欧美一区二区视频| 亚洲午夜视频在线| 日韩一区二区三区视频| 国产精品一区二区久久不卡| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人高清视频在线| 亚洲精品一二三四区| 7777精品伊人久久久大香线蕉最新版| 久久精品国产99| 亚洲三级理论片| 日韩一区二区在线观看视频播放| 国产精品1区2区3区| 亚洲国产综合在线| 国产喷白浆一区二区三区| 在线视频一区二区三区| 国产一区二区日韩精品| 亚洲一区二区三区不卡国产欧美| 久久精品亚洲乱码伦伦中文| 国产精品亚洲视频| 韩国三级电影一区二区| 91精品国产综合久久久久久久| 国产麻豆91精品| 亚洲成人免费看| 欧美经典一区二区| 日韩女优视频免费观看| 色综合久久综合| 国产成人精品在线看| 视频一区二区中文字幕| 亚洲三级免费电影| 欧美国产97人人爽人人喊| 精品久久久久久久久久久久久久久久久 | 国产成人综合网| 蜜臀久久99精品久久久画质超高清| 中文字幕第一页久久| 欧美精品三级在线观看| 色视频欧美一区二区三区| aaa欧美日韩| 成人免费毛片高清视频| 国产成人夜色高潮福利影视| 麻豆精品视频在线| 美腿丝袜在线亚洲一区| 国产一区不卡精品| 亚洲va国产天堂va久久en| 亚洲激情一二三区| 综合久久综合久久| 最新热久久免费视频| 国产精品情趣视频| 国产精品久久久久一区二区三区 | 国产人久久人人人人爽| 国产丝袜欧美中文另类| 久久久久久日产精品| ww久久中文字幕| 久久久亚洲精华液精华液精华液| 久久久久久久久久久电影| 国产欧美一区在线| 中文字幕亚洲成人| 亚洲女人的天堂| 一区二区三区电影在线播| 亚洲综合区在线| 天天色综合天天| 久久99久久久久| 国产精品18久久久久久久网站| 国产成人精品免费在线| 91美女片黄在线观看| 欧美日韩视频不卡| 欧美一个色资源| 国产日韩成人精品| 一区av在线播放| 美女视频黄久久| 成人一级片在线观看| 欧亚洲嫩模精品一区三区| 欧美美女网站色| 欧美一级片免费看| 日本一区二区在线不卡| 亚洲一区二区三区在线看| 久久精品国产精品亚洲红杏| 国产精品一二三四| 欧美伊人久久大香线蕉综合69 | 色88888久久久久久影院野外| 欧美日韩国产天堂| 久久伊人蜜桃av一区二区| 中文字幕一区二区三区在线不卡| 午夜影院在线观看欧美| 国产成人精品影院| 欧美日韩在线一区二区| 国产视频一区二区在线观看| 亚洲国产另类av| 风间由美一区二区av101| 欧美巨大另类极品videosbest| 亚洲国产精品成人久久综合一区| 亚洲综合久久av| 国产精品自在欧美一区| 欧美日韩精品高清| 日韩码欧中文字| 国产在线国偷精品产拍免费yy| 在线影院国内精品| 国产精品美女www爽爽爽| 婷婷久久综合九色国产成人| 成人免费视频一区| 26uuu另类欧美| 免费在线看成人av| 欧美亚洲图片小说| 最新中文字幕一区二区三区 | 欧美精品123区| 亚洲女同ⅹxx女同tv| 国产91丝袜在线播放九色| 精品国产乱码久久久久久夜甘婷婷| 亚洲高清一区二区三区| 一本一道综合狠狠老| 1000精品久久久久久久久| 99视频超级精品| 亚洲欧洲成人av每日更新| 欧美日韩中字一区| 亚洲天堂福利av| 成人精品免费网站| 国产日韩欧美一区二区三区综合| 免费不卡在线观看| 精品国产sm最大网站| 日韩和的一区二区| 欧美一区二区在线观看| 亚洲超碰97人人做人人爱| 一本色道久久综合亚洲91| 亚洲品质自拍视频| 欧美综合亚洲图片综合区| 亚洲综合区在线| 欧美日韩一区二区三区四区 | 国产精品人妖ts系列视频| 国产成人av一区| 国产精品视频第一区| 99久久精品国产观看| 亚洲品质自拍视频| 91 com成人网| 国产在线精品一区二区| 久久伊99综合婷婷久久伊| 国产午夜精品一区二区三区四区| 视频一区视频二区中文字幕| 成人午夜看片网址| 91国产免费看| 国产麻豆精品theporn| 午夜精品久久一牛影视| 香蕉影视欧美成人| 国产精品1024| 国产成人免费视频精品含羞草妖精| 欧美性大战xxxxx久久久| 91在线观看污| 久久蜜桃香蕉精品一区二区三区| 国产精品久久午夜| 亚洲欧洲成人精品av97| 亚洲日本在线a| 午夜精品福利在线| 日韩一区二区三区免费观看| 亚洲国产精品传媒在线观看| 日韩和欧美的一区| 久久综合色8888| 三级不卡在线观看| 欧美日韩一级二级| 久久久777精品电影网影网 | 色综合久久综合网| 亚洲亚洲精品在线观看| 色婷婷久久久综合中文字幕| 国产麻豆精品久久一二三| 日韩美女啊v在线免费观看| 精品欧美黑人一区二区三区| 欧美色网站导航| 日韩电影在线观看一区| 精品成人私密视频| 国产精品第一页第二页第三页| 9191成人精品久久| 99re这里只有精品首页| 国产高清精品久久久久| 国产乱码精品一品二品| 另类人妖一区二区av| 亚洲成人自拍一区| 首页国产欧美久久| 久久成人综合网| 久久久久久麻豆| 国产欧美一区二区在线| 久久久99精品免费观看不卡| 欧美一区中文字幕|