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

主頁 > 知識(shí)庫 > Ruby元編程的一些值得注意的地方

Ruby元編程的一些值得注意的地方

熱門標(biāo)簽:白銀外呼paas系統(tǒng) 滴滴外呼系統(tǒng) 百度地圖標(biāo)注自定義圖片 電銷機(jī)器人廠商代理 徐州網(wǎng)絡(luò)外呼系統(tǒng)哪個(gè)好 高德地圖標(biāo)注客服 地圖標(biāo)注賺錢項(xiàng)目注冊(cè) 湖州u友防封電銷卡 常德電銷平臺(tái)外呼系統(tǒng)軟件價(jià)格

  避免無限循環(huán)的元編程。

    寫一個(gè)函數(shù)庫時(shí)不要使核心類混亂(不要使用 monkey patch)。

    代碼塊形式最好用于字符串插值形式。
        當(dāng)你使用字符串插值形式,總是提供 __FILE__ 和 __LINE__,使得你的回溯有意義。

 class_eval 'def use_relative_model_naming?; true; end', __FILE__, __LINE__

        define_method 最好用 class_eval{ def ... }

    當(dāng)使用 class_eval (或者其他的 eval)以及字符串插值,添加一個(gè)注釋塊使之在插入的時(shí)候顯示(這是我從 rails 代碼學(xué)來的實(shí)踐):

 # from activesupport/lib/active_support/core_ext/string/output_safety.rb
 UNSAFE_STRING_METHODS.each do |unsafe_method|
  if 'String'.respond_to?(unsafe_method)
  class_eval -EOT, __FILE__, __LINE__ + 1
   def #{unsafe_method}(*args, block)  # def capitalize(*args, block)
   to_str.#{unsafe_method}(*args, block) # to_str.capitalize(*args, block)
   end          # end

   def #{unsafe_method}!(*args)    # def capitalize!(*args)
   @dirty = true       # @dirty = true
   super         # super
   end          # end
  EOT
  end
 end

    避免在元編程中使用 method_missing,它使得回溯變得很麻煩,這個(gè)習(xí)慣不被列在 #methods,拼寫錯(cuò)誤的方法可能也在默默的工作,例如 nukes.launch_state = false。考慮使用委托,代理或者是 define_method ,如果必須這樣,使用 method_missing ,
        確保 也定義了 respond_to_missing?
        僅捕捉字首定義良好的方法,像是 find_by_* ― 讓你的代碼越肯定(assertive)越好。
        在語句的最后調(diào)用 super
        delegate 到確定的、非魔法方法中:

 # bad
 def method_missing?(meth, *args, block)
  if /^find_by_(?prop>.*)/ =~ meth
  # ... lots of code to do a find_by
  else
  super
  end
 end

 # good
 def method_missing?(meth, *args, block)
  if /^find_by_(?prop>.*)/ =~ meth
  find_by(prop, *args, block)
  else
  super
  end
 end

 # best of all, though, would to define_method as each findable attribute is declared


您可能感興趣的文章:
  • ruby元編程之創(chuàng)建自己的動(dòng)態(tài)方法
  • ruby元編程之method_missing的一個(gè)使用細(xì)節(jié)
  • Ruby元編程之夢中情人method_missing方法詳解
  • Ruby元編程技術(shù)詳解(Ruby Metaprogramming techniques)
  • Ruby元編程小結(jié)
  • Ruby和元編程之萬物皆為對(duì)象
  • ruby元編程實(shí)際使用實(shí)例
  • Ruby元編程基礎(chǔ)學(xué)習(xí)筆記整理

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby元編程的一些值得注意的地方》,本文關(guān)鍵詞  Ruby,元,編程,的,一些,值得注意,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby元編程的一些值得注意的地方》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ruby元編程的一些值得注意的地方的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 精河县| 天峻县| 柘城县| 台州市| 揭东县| 方城县| 棋牌| 营口市| 二连浩特市| 凤山市| 富顺县| 荣成市| 乡城县| 习水县| 松阳县| 茂名市| 舒兰市| 丹棱县| 壤塘县| 长岛县| 舞钢市| 长宁县| 类乌齐县| 铜梁县| 潜山县| 横峰县| 睢宁县| 玉田县| 天镇县| 灵武市| 弥渡县| 广昌县| 历史| 南川市| 高青县| 太康县| 常宁市| 亚东县| 郎溪县| 平陆县| 南投县|