• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby元编程的一些值得注意的地方

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

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了ruby元编程,ruby元编程 第2版 pdf,ruby编程工具,ruby编程软件,ruby编程语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

  避免无限循环的元编程。

    写一个函数库时不要使核心类混乱(不要使用 monkey patch)。

    代码块形式最好用于字符串插值形式。
        当你使用字符串插值形式,总是提供 __FILE__ 和 __LINE__,使得你的回溯有意义。

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

</div>

        define_method 最好用 class_eval{ def ... }

    当使用 class_eval (或者其他的 eval)以及字符串插值,添加一个注释块使之在插入的时候显示(这是我从 rails 代码学来的实践):

 # 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

</div>

    避免在元编程中使用 method_missing,它使得回溯变得很麻烦,这个习惯不被列在 #methods,拼写错误的方法可能也在默默的工作,例如 nukes.launch_state = false。考虑使用委托,代理或者是 define_method ,如果必须这样,使用 method_missing ,
        确保 也定义了 respond_to_missing?
        仅捕捉字首定义良好的方法,像是 find_by_* ― 让你的代码越肯定(assertive)越好。
        在语句的最后调用 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

</div>


</div>

您可能想查找下面的文章:

  • Ruby和元编程之万物皆为对象
  • ruby元编程实际使用实例
  • 21个你应该知道的Ruby编程技巧
  • Ruby设计模式编程中对外观模式的应用实例分析
  • Ruby设计模式编程中使用Builder建造者模式的实例
  • Ruby设计模式编程之适配器模式实战攻略
  • Ruby元编程的一些值得注意的地方
  • Ruby编程中的命名风格指南
  • Ruby编程中的语法使用风格推荐
  • Ruby编程中的赋值相关操作

相关文章

  • Ruby的面向对象编程的基础教程
  • windows和linux下Ruby的下载与安装
  • ruby使用restclient上传服务器本地文件示例
  • 分析 rudy 类
  • 在Ruby程序中连接数据库的详细教程
  • Ruby 多线程的潜力和弱点分析
  • ruby 迭代器使用方法
  • 浅析Ruby中的Profiling工具的用法
  • Ruby中的集合编写指南
  • 苹果mac OS X上安装metasploit

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby里4种比较函数(equal?, eql?, ==, ===)详解
    • Ruby编程中的命名风格指南
    • 举例理解Ruby on Rails的页面缓存机制
    • Rails bundle命令安装mysql gem包出错的解决方法
    • Ruby中的Hash哈希类型基本操作方法小结
    • 用实际代码演示Ruby的容易被误解的6个特性
    • CentOS7下搭建ruby on rails开发环境
    • 升级到mac 10.10之后使用pod出现问题的解决方法
    • Ruby中的block、proc、lambda区别总结
    • ruby on rails 代码技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有