清单3
在 清单 3 中的两个类中您可能会注意到,Ruby 支持一种定义属性的简写方式:attr_reader 和 attr_writer。因为使用了这种方式,所以可以在 Word 类中设置 和获取 对应的属性,如清单 7 所示:
清单 7. attr_reader 和 attr_writer 的作用
attr_reader 和 attr_writer 都不是关键词,而是 Ruby 中的实际方法(在 Module 类中),它们以符号作为参数。符号 是前面有冒号(:)的任何变量,更妙的是符号本身也是对象!
注意,因为在 清单 3 中使 synonyms 成为只读的,所以 Ruby 拒绝执行清单 7 中的最后一行代码。另外,还可以使用 attr_accessor 方法编写属性声明代码,指出属性是既可读又 可写的。
module Dictionary class Word attr_reader :spelling, :part_of_speech, :definitions, :synonyms attr_writer :spelling, :part_of_speech def initialize(spelling, part_of_speech, definitions = [], synonyms = []) @spelling = spelling @part_of_speech = part_of_speech definitions.each{ |idef| idef.word = self} @definitions = definitions @synonyms = synonyms end def add_definition(definition) definition.word = self if definition.word != self @definitions << definition end def add_synonym(synonym) @synonyms << synonym end end class Definition attr_reader :definition, :word, :example_sentences attr_writer :definition, :word def initialize(definition, word = nil, example_sentences = []) @definition = definition @word = word @example_sentences = example_sentences end end end
在 清单 3 中的两个类中您可能会注意到,Ruby 支持一种定义属性的简写方式:attr_reader 和 attr_writer。因为使用了这种方式,所以可以在 Word 类中设置 和获取 对应的属性,如清单 7 所示:
清单 7. attr_reader 和 attr_writer 的作用
require "dictionary" wrd = Dictionary::Word.new("turpitude", "Noun") wrd.part_of_speech # "Noun" wrd.spelling # "turpitude" wrd.spelling = "bibulous" wrd.spelling # "bibulous" syns = [Dictionary::Word.new("absorptive", "Adjective"), Dictionary::Word.new("imbibing", "Noun") ] # Danger! wrd.synonyms = syns = syns #Exception: undefined method `synonyms='...
attr_reader 和 attr_writer 都不是关键词,而是 Ruby 中的实际方法(在 Module 类中),它们以符号作为参数。符号 是前面有冒号(:)的任何变量,更妙的是符号本身也是对象!
注意,因为在 清单 3 中使 synonyms 成为只读的,所以 Ruby 拒绝执行清单 7 中的最后一行代码。另外,还可以使用 attr_accessor 方法编写属性声明代码,指出属性是既可读又 可写的。
发表评论
-
使用 Capistrano 对rails app进行快速部署
2011-02-23 15:05 1759仅转载了,还没有用过,如果有问题可留言,大家一起讨论 在进行 ... -
ruby进行web serveice的方法
2011-02-15 14:37 835require 'soap/wsdlDriver' #url ... -
友好的登录系统
2011-01-28 10:54 672友好的登录系统 按照目前的代码,如果管理员尝试在未登录的状态下 ... -
第三版
2011-01-27 15:36 0view格式化价格 <%= number_to_curr ... -
用户操作数据库记录
2011-01-25 15:16 850今天我们看看怎样在数据库记录用户操作 db/migrate/0 ... -
Ruby中 respond_to? 和 send 的用法
2011-01-25 14:24 1239obj = Object.new if obj ... -
rails 路由
2011-01-25 14:17 11504 正则路由 Rails支持 ... -
rails 验证自定义方法
2011-01-25 11:37 1565可以自定义validate(), 这个方法在每次保存数据时都会 ... -
flash-notice自动消失
2011-01-25 11:12 1367flash 提示的自动消失: <body onloa ... -
密码加密和解密
2011-01-25 11:11 1192two way crypt: #http://crypt. ... -
开发环境页面直接调试
2011-01-25 11:06 666#首先,在layout里边的合适地方添加debug,并且使 ... -
对静态页面进行缓存
2011-01-24 14:35 928对于静态站点我们可以利用Rails的cache来管理,如在co ... -
rvm部署rails3和ruby192
2011-01-21 10:39 10851. Installing RVM $ sudo gem ... -
rails 加载不同插件设置
2010-12-31 14:49 374config.plugins = [ :all ] co ... -
参考rails 下拉
2010-12-31 14:47 617对于多数的model的select列表,我都会用model属性 ... -
自定义form提示
2010-12-31 10:53 678自定义form错误提示 application_contro ... -
提高rails开发模式下静态页加载速度
2010-12-31 10:44 873http://github.com/thedarkone/ra ... -
rails 连接多个数据库
2010-12-30 10:31 748首先在database.yml中加入以下代码,其中cg_clo ... -
瘦controller,富model
2010-12-28 14:02 735----先看这么一段rhtml代码:渲染模板中加入了这么多的逻 ... -
rake 命令一览
2010-12-28 11:21 985rake db:abort_if_pending_migr ...
相关推荐
rails, Ruby on Rails 欢迎使用 RailsRails 是一个web应用程序框架,它包括根据 Model-View-Controller ( MVC ) Pattern 创建数据库备份的web应用程序所需的所有内容。理解 MVC Pattern 是理解 Rai
帮组你深入理解rails的内部原理, 实作rails的各个部件
请结合我上次上传的“Ruby中文文档”,学习了解之后,再来实际操作,理解“Ruby On Rails”框架开发web程序,这个是很不错的实例,能够在短期内实现Rails的web开发。
英文新版:Agile Web Development with Rails, 4th Edition(For Rails 3.1 & 3.2) 内容简介 ...作为一位活跃的Rails开发者,他理解Rails。 汉森(David Heinemeier Hansson),是Rails框架的缔造者。
本资源是一套关于Ruby on Rails开发的全面教程...动手实践: 在学习过程中,务必进行代码实践,跟随教程一步步实现项目,加深对知识的理解和掌握。 通过学习本资源,您将掌握Ruby on Rails开发的核心技术和实战应用。
在本书的每个章节中,都有与内容配合的详细实例,帮助读者快速理解并掌握使用ruby on rails进行web开发的步骤。 web开发的相关技术自身在不断发展中,ruby语言也在不断的完善和进步。本书的作者们试图紧跟rails...
在本书的每个章节中,都有与内容配合的详细实例,帮助读者快速理解并掌握使用ruby on rails进行web开发的步骤。 web开发的相关技术自身在不断发展中,ruby语言也在不断的完善和进步。本书的作者们试图紧跟rails...
就在此时,Rails 从天而降,而且它要 简单得多。 光有简单是不够的。这些人都是专业的软件开发者,他们编写的是真实的网站应用,他们希望自己 的产品经得起时间的检验,所以他们总是选择先进而专业的技术。这些...
主要介绍了举例理解Ruby on Rails的页面缓存机制,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
主要介绍了深入理解Ruby on Rails中的缓存机制,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
它是Ruby,因此您可以理解和修改它以满足您的需求。 要求 经过最新的MRI Ruby 2.2 +,2.3 +,Rails 4. *和Rails 5. *的测试。 其他版本未经测试,但可能工作正常。 安装 将以下行添加到应用程序的Gemfile中: gem ...
感谢您的支持和理解。 PowerDNS on Rails PowerDNS on Rails是一个Ruby on Rails应用程序,旨在使用通用MySQL / PostgreSQL后端管理安装。 更多信息: 自述文件(此文件) 快速安装 进一步提供了使用Vagrant运行...
Skrollr-Rails 是一个独立的移动和桌面视差滚动库。 skrollr-rails gem 将 skrollr 与 Rails 资产管道集成,以便于使用和版本控制。 安装 将此行添加到应用程序的... 该插件使 IE 理解 opacity、rgb() 和 hsl()(带有
Ruby on Rails是Ruby世界中Web开发框架的代名词,人气相当之高,本文就带大家以MVC的思维方式来理解Ruby on Rails框架的设计结构,需要的朋友可以参考下
因为要了解Rails,您首先需要了解Ruby。与任何语言和任何WAF一样,了解语言的特征并理解WAF在您脑海中的移动对于掌握WAF至关重要。 在上半部分,有一门Ruby课程首先要了解Rails。在下半年,我们将通过以使用为主题来...
Zen Rails安全清单概要本文档提供了开发Ruby on Rails应用程序时要实施的安全措施的不一定全面的列表。 它旨在用作快速参考,并最大程度地减少开发人员健忘造成的漏洞。 它并不能替代开发人员有关安全编码原则以及...
重要 master分支包含前沿开发代码。 检查branches或tags以获取... 易于理解(因为它是在Rails控制器之后构图的)。 最低要求 Rails 4.0.2或更高版本 快速范例 Paloma控制器: Paloma . controller ( 'Users' , { new