本文作者用一个简单的事例,带我们认识了如何使用元编程的方式为 Ruby 类增加类似 Java 的 properties 支持。介绍了一些应用契约设计和可插拔类型系统的提高性能的原则。
在 Java 内容相关的博客和技术社区中,关于 Properties 的讨论一直没有停止过。有人认为 Properties 的出现大大释放了软件开发人员的生产力,而有人认为这不过是一个新瓶装老酒的把戏……。不管怎样,在越来越多的 Java 软件项目中出现了 Properties 的身影。那么在 Ruby 语言中如何实现 Properties 呢?这是本文讨论的重点。
作者 Werner Schuster 在 Ruby 语言中引入嵌入式 DSL,实现了类似 Properties 的功能,让计算机来处理编程过程中的重复工作。文章的最后还介绍了如果用 Property 特性来满足契约式的设计。本文所使用的代码非常简单,更多地是介绍了一种编程的思想:灵活运用语言中已有的特性可以实现其他语言中强大的功能。
更多内容推荐
MountainWest RubyConf 2009 视频
3月13日至14日在盐湖城举办了2009年的MountainWest RubyConf。在Confreaks上可以找到此次会议的所有演讲;我们选择了一些有意思的演讲:Rails 3和Merb、DSL设计、Rails可用性以及Vertabra等等,来帮助你大致了解这个会议以及会议的一些要点。
Matz:如何成为语言的设计者
在今天举行的RubyConfChina 2012大会上,Ruby语言之父松本行弘第四次来到中国参加大会,为大家带来了一场名为《Be a language designer》的主题演讲,分享了作为语言设计者的心得,还带来了mruby与Ruby 2.0的最新信息。
全面理解 ActiveRecord
看了一些数据库相关的书籍
17|动态代理:如何在运行时插入逻辑?
如何在运行时插入逻辑?
2023-04-19
在不改变语言的前提下如何推进 Java 的不断演进
在本文中,InfoQ谈到了有助于发掘潜在的新的Java语言特性的3种技术——DSL、注解处理器以及将语法糖从语言迁移到IDE中。
标准化对 Ruby 意味着什么
Ruby的标准化工作正在持续推进:2008年正式宣布后,已经发表了Ruby标准的第一版草稿。这对RubySpec(可执行的Ruby规范)和其他Ruby实现意味着什么呢?
02|扩展 Bean:如何配置 constructor、property 和 init-method?
配置constructor、property和init-method
2023-03-15
15|mBatis:如何将 SQL 语句配置化?
mBatis:如何将SQL语句配置化?
2023-04-14
加餐|GPT 编程(上) :如何用 ChatGPT 辅助我们编程?
如何用ChatGPT辅助我们编程?
2023-05-15
阅读者:Ruby 的白魔法书
在Ruby的世界中,程序员们享受着各种光怪陆离的语法糖,也经历着各种各样的陷阱。而这一切的根本就在于Ruby强大的元编程能力。元编程就像Ruby世界的魔法,当其是白魔法的时候可以帮助你把程序变得异常简洁,美观;而当其是黑魔法的时候,你将会迷失在一些很难解释的Bug中。
如何从 MongoDB 迁移到 MySQL
我目前在开发的项目其实在上古时代是使用 MySQL 作为主要数据库的
Effective Ruby LiveLessons——Sam Phippen 访谈
由Sam Phippen制作的Effective Ruby LiveLessons,是一系列讲解了专业的Rubyists的最佳实践的视频教程,它针对各个阶层的Ruby程序员。视频教程包含了亲自示范,来帮助观看者理解每个项目是如何实行的。InfoQ和制作者谈了一些有关视频中可以学到的课程,以及Ruby on Rails的最佳实践。
为您的初创公司选择合适的编程语言
如果您希望在一间满是开发人员的房间里成为争议的焦点,那么最好的办法莫过于宣称一种编程语言比另一种编程语言更好。
01|原始 IoC:如何通过 BeanFactory 实现原始版本的 IoC 容器?
用原始的IoC容器来管理一个Bean
2023-03-13
编程语言的另一面:Python、Java、C#和 Perl 作者谈语言设计
编程语言是如何设计的?编程语言如何才能具备可维护性?编程语言未来将如何发展?一起来听听四位流行编程语言作者的分享吧!
PHP 5.4 弃 Register Globals 增 Traits
PHP 5.4于本月尘埃落定,它是PHP自2009年以来的首次重大更新。该版本对语言部分进行了增强,包括支持Traits和移除部分争议特性。
05|实现完整的 IoC 容器:构建工厂体系并添加容器事件
建立BeanFactory体系,添加容器事件
2023-03-22
Richard Warburton 与 Raoul-Gabriel Urma 在 Devoxx UK 2015 上回顾 Java 泛型历史
Richard与Raoul向广大开发者提供关于Java 8的培训课程。近日,二人在Devoxx UK 2015上共同进行了一场演讲,回顾了Java泛型的起源与动机、介绍了目前一些不为人知的特性,同时对Java 10进行了展望。该演讲由3个精彩的部分构成:泛型的过去、现在与未来。
社区专家谈 Ruby 及 Rails 的发展
最近,Ruby社区专家Paul Wilson撰文回顾了Ruby发展的过去和现状,同时对Ruby未来发展的方向表示了自己的担忧。
Charles Nutter 访谈:Duby 与 Surinx
Charles Nutter讨论了他的两种新JVM语言:Duby和与其同源的动态语言Surinx。
推荐阅读
11. AOP 简介与不同框架设计概览
2023-09-26
5. AOP 方案:Middleware 各种实现、总结与面试要点
2023-09-26
Ruby 之父:不要违背开发人员的本能
成为一名优秀 Java 开发人员的 7 个步骤
畅谈百年编程语言
编程语言42.Dubbo Wrapper 机制
2023-09-29
从 Java 12 到 Java 17 那些激动人心的新特性
电子书
大厂实战PPT下载
换一换 钱祎 | 伊克罗德 资深解决方案架构师
陈庆 | 第四范式 LLM BI 方向产品负责人
谭坦 | 施耐德电气 数字化服务/首席架构师
评论