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

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

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

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

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

定義方法就是

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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
    国产剧情一区二区| 91免费国产在线| 日韩一区二区三区视频在线 | 欧美精品乱人伦久久久久久| 亚洲欧美日韩在线播放| 99久久久无码国产精品| 亚洲午夜久久久久中文字幕久| 色天使久久综合网天天| 天天影视色香欲综合网老头| 日韩欧美在线1卡| 成人一级黄色片| 日韩国产高清在线| 国产清纯白嫩初高生在线观看91| 色综合久久久久久久| 日本不卡免费在线视频| 亚洲手机成人高清视频| 欧美精品成人一区二区三区四区| 成人污污视频在线观看| 免费在线观看一区| 一区二区三区丝袜| 国产欧美一区二区三区在线看蜜臀 | 成人小视频免费观看| 亚洲成人综合视频| 中文字幕中文字幕一区| 精品国产不卡一区二区三区| 精品视频一区二区三区免费| 成人免费精品视频| 国产精品亚洲一区二区三区妖精 | 成人av在线影院| 日产国产欧美视频一区精品| 日韩三级av在线播放| 欧美偷拍一区二区| 在线亚洲人成电影网站色www| 欧美在线不卡视频| 91麻豆免费观看| 91在线视频免费91| 91日韩在线专区| 色综合天天天天做夜夜夜夜做| 99久久精品国产一区| 91首页免费视频| 色婷婷激情久久| 欧美日韩综合一区| 日韩欧美国产1| 欧美激情一区二区三区蜜桃视频| 精品国产乱码久久久久久免费| 欧美不卡视频一区| 精品国产免费人成在线观看| 国产欧美一区二区精品仙草咪| 亚洲人成影院在线观看| 舔着乳尖日韩一区| 久久精品国产精品亚洲综合| 高清在线不卡av| 精品视频全国免费看| 久久久国产精品麻豆| 亚洲免费视频成人| 日韩电影在线免费| 99精品欧美一区| 久久综合网色—综合色88| 亚洲三级视频在线观看| 极品销魂美女一区二区三区| 色婷婷久久久综合中文字幕| 911精品产国品一二三产区| 国产精品久久网站| 日韩vs国产vs欧美| 91精品福利在线| 国产精品九色蝌蚪自拍| 国产乱对白刺激视频不卡| 在线精品视频免费播放| 国产精品高潮呻吟久久| 精品一区二区三区免费播放 | 91成人免费电影| 中文字幕精品综合| 国产在线日韩欧美| 精品国产精品网麻豆系列| 日本怡春院一区二区| 欧美日韩高清一区二区三区| 亚洲一区二区五区| 在线一区二区三区四区| 国产香蕉久久精品综合网| 五月天激情小说综合| 在线电影一区二区三区| 午夜精品福利在线| 欧美一区二区三区在线| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美视频在线观看一区二区| 夜夜嗨av一区二区三区四季av| 在线观看日韩精品| 亚洲国产日日夜夜| 精品sm在线观看| av爱爱亚洲一区| 亚洲精品视频观看| 精品国产一区二区三区忘忧草| 国产精品综合二区| 亚洲啪啪综合av一区二区三区| 欧美性xxxxxx少妇| 裸体健美xxxx欧美裸体表演| 国产精品视频在线看| 欧美日韩黄色影视| aaa欧美色吧激情视频| 亚洲成人高清在线| 亚洲视频你懂的| 欧美精品一区二区三区在线| 成人午夜精品在线| 蜜桃视频免费观看一区| 伊人开心综合网| 国产精品萝li| 中文文精品字幕一区二区| 日韩午夜激情电影| 色香蕉成人二区免费| 国产成人日日夜夜| 国产成人精品免费看| 国产精品一区免费视频| 激情五月播播久久久精品| 亚洲国产三级在线| 奇米色一区二区| 久久99日本精品| 国产成人午夜高潮毛片| 国产一区二区三区电影在线观看| 日韩avvvv在线播放| 日韩av电影免费观看高清完整版 | 国产精品国产三级国产有无不卡 | 亚洲欧洲精品成人久久奇米网| 久久精品一区蜜桃臀影院| 3751色影院一区二区三区| 欧美一级久久久久久久大片| 欧美三级电影在线看| 在线影院国内精品| 欧洲一区二区av| 欧美xxxxxxxx| 日本一区二区三级电影在线观看| 欧美成人a∨高清免费观看| 欧美不卡激情三级在线观看| 国产精品视频看| 中文字幕一区二区视频| 精品国产凹凸成av人导航| 色婷婷激情综合| 欧美卡1卡2卡| 国产精品成人在线观看| 一区二区三区四区不卡视频| 日欧美一区二区| 北条麻妃一区二区三区| 欧美性生交片4| 精品成人在线观看| 亚洲少妇30p| 精品系列免费在线观看| 91亚洲精品一区二区乱码| 日韩女同互慰一区二区| 亚洲欧美综合网| 爽好久久久欧美精品| 东方aⅴ免费观看久久av| 9191国产精品| 国产精品欧美一区二区三区| 亚洲欧美激情在线| 久久蜜臀中文字幕| 亚洲色图欧洲色图婷婷| 成人免费的视频| 51午夜精品国产| 亚洲人成精品久久久久久 | 国产精品麻豆视频| 日韩影院精彩在线| 波多野结衣的一区二区三区| www国产亚洲精品久久麻豆| 亚洲综合在线电影| 99久久免费视频.com| 国产欧美日韩三级| 在线观看日韩一区| 国产精品久久久久久久久搜平片 | 国产精品三级电影| 国产精品69毛片高清亚洲| 欧美成人免费网站| av资源网一区| 亚洲精品国产一区二区三区四区在线| 国产成人在线视频免费播放| 亚洲一级电影视频| 欧美一区二区三区视频| 久久99精品久久久久久动态图| 欧美精品丝袜中出| 国产成人亚洲综合a∨婷婷图片 | 99久久国产综合精品色伊| 国产精品午夜电影| 欧美一区二区三区电影| 美国十次综合导航| 一区在线观看视频| 欧美www视频| av在线一区二区| 午夜精品福利在线| 亚洲女同一区二区| 88在线观看91蜜桃国自产| 国产精品一级片| 亚洲日本va午夜在线电影| 久久精品一区二区三区av| 91影院在线观看| 日本aⅴ亚洲精品中文乱码| 伊人夜夜躁av伊人久久| 日韩精品一区二区三区中文精品| www.欧美日韩国产在线| 日韩和欧美的一区| 亚洲一区二区精品久久av| 久久久影视传媒| 欧美日韩亚洲综合在线|