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

主頁 > 知識庫 > 詳解Ruby中的代碼塊對象Proc

詳解Ruby中的代碼塊對象Proc

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

Proc對象

Proc是由塊轉換來的對象。創建一個Proc共有四種方法,分別是:

示例代碼

# 法一
inc = Proc.new { | x | x + 1}
inc.call(2) #=> 3

# 法二
inc = lambda {| x | x + 1 }
inc.call(2) #=> 3

# 法三
inc = ->(x) { x + 1}
inc.call(2) #=> 3

# 法四
inc = proc {|x| x + 1 }
inc.call(2) #=> 3

除了上面的四種之外,還有一種通過操作符的方式,將代碼塊與Proc對象進行轉換。如果需要將某個代碼塊作為參數傳遞給方法,需要通過為這個參數添加符號,并且其位置必須是在參數的最后一個

符號的含義是: 這是一個Proc對象,我想把它當成代碼塊來使用。去掉符號,將能再次得到一個Proc對象。

示例代碼

def my_method(the_proc)
  the_proc
end

p = my_method {|name| “Hello, #{name} !”}
p.class  #=> Proc
p.call(“Bill”)  #=> “Hello,Bill”


def my_method(greeting)
  “#{greeting}, #{yield}!”
end

my_proc = proc { “Bill” }
my_method(“Hello”, my_proc)

一些需要注意的地方

在使用block時,我會忽略proc的存在,我將proc定位為一個幕后的工作者。我經常寫類似下面的代碼,

 def f(...)
  ...
  yield
  ...
 end

 def f(..., p)
  ...
  p.call
  ...
 end

 def f(..., p)
  instance_eval p
  ...
 end

 def f(..., p)
  ...
  defime_method m, p
  ...
 end

有些新手會寫類似下面的一執行就會報錯的代碼,

 

 def f(..., p)
  instance_eval p
 end

 def f(..., p)
  instance_eval p.call
 end

也有這樣寫的,

 def f(..., p)
  instance_eval do
   p.call
  end
 end

或者

 def f(...)
  instance_eval do
   yield
  end
 end

我甚至寫過類似下面的代碼,

 def f(...)
  instance_eval yield
 end

我們經常在該掛block的時候,卻把proc對象當參數傳給方法了, 或者不明白p就是block可以直接交給方法使用,我曾經也犯過這樣的錯誤就是因為沒有把block和proc正確的區分開來, p是block, p是proc,不到萬不得已的情況下不要顯式地創建proc,每當我對block和proc之間的關系犯糊涂時,我就會念上幾句。

您可能感興趣的文章:
  • 深入理解Ruby中的代碼塊block特性
  • Ruby中的block代碼塊學習教程
  • 詳解Ruby中的代碼塊及其參數傳遞

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

巨人網絡通訊聲明:本文標題《詳解Ruby中的代碼塊對象Proc》,本文關鍵詞  詳解,Ruby,中的,代碼,塊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Ruby中的代碼塊對象Proc》相關的同類信息!
  • 本頁收集關于詳解Ruby中的代碼塊對象Proc的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 扶绥县| 楚雄市| 六安市| 巴马| 商洛市| 黔东| 灵宝市| 三门峡市| 葫芦岛市| 井冈山市| 桑日县| 阿鲁科尔沁旗| 榆社县| 马龙县| 额尔古纳市| 临湘市| 张家港市| 无锡市| 集贤县| 新乡市| 临海市| 怀安县| 藁城市| 大足县| 嘉禾县| 太仓市| 北碚区| 资兴市| 定州市| 丹江口市| 张家界市| 和顺县| 山东省| 和政县| 南郑县| 栾城县| 油尖旺区| 曲水县| 郸城县| 巫溪县| 伊春市|