国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby中proc和lambda的兩個區(qū)別

2020-10-29 19:39:00
字體:
供稿:網(wǎng)友

1、在proc和lambda中,return關(guān)鍵字有不同含義:
在proc中,return僅僅表示從這個lambda中返回.
在lambda中,return不是從proc中返回,而是從定義proc的作用域中返回.

復制代碼 代碼如下:

def one_method
    p = Proc.new{return 10}  #調(diào)用這個塊的時候,從p的作用域直接返回10,因此下面的return將不會執(zhí)行
    result = p.call
    return result * 2
end
 
def two_method
    p = lambda{return 10}   #調(diào)用這個塊的時候,從lambda中返回10
    result = p.call
    return result * 2       #繼續(xù)執(zhí)行
end
 
puts one_method   # 10
puts two_method   #  20

2、在proc和lambda中,檢查參數(shù)的方式不同:

在proc中,如果參數(shù)比定義的多,會忽略多余參數(shù),如果參數(shù)比定義的少,則自動把未傳過來的參數(shù)指定為nil.
在lambda中,不管實際的參數(shù)比定義時的參數(shù)多還是少,都會拋出ArgumentError錯誤.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 苗栗县| 汉中市| 昌江| 天镇县| 康平县| 祥云县| 永清县| 昭觉县| 东宁县| 丹棱县| 邢台市| 阿城市| 苏尼特右旗| 石河子市| 石景山区| 碌曲县| 威信县| 蓬安县| 无锡市| 墨脱县| 拉萨市| 鲁甸县| 石城县| 廊坊市| 双流县| 库车县| 通辽市| 宁陵县| 桦甸市| 饶平县| 云阳县| 平昌县| 旬邑县| 张家界市| 彭州市| 黑龙江省| 湘乡市| 大同市| 肥城市| 邢台县| 北京市|