`
mike.gao
  • 浏览: 46597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

rails要理解

阅读更多
清单3
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 方法编写属性声明代码,指出属性是既可读又 可写的。
分享到:
评论

相关推荐

    rails, Ruby on Rails.zip

    rails, Ruby on Rails 欢迎使用 RailsRails 是一个web应用程序框架,它包括根据 Model-View-Controller ( MVC ) Pattern 创建数据库备份的web应用程序所需的所有内容。理解 MVC Pattern 是理解 Rai

    crafting rails application

    帮组你深入理解rails的内部原理, 实作rails的各个部件

    Ruby On Rails开发实例-源代码

    请结合我上次上传的“Ruby中文文档”,学习了解之后,再来实际操作,理解“Ruby On Rails”框架开发web程序,这个是很不错的实例,能够在短期内实现Rails的web开发。

    Web开发敏捷之道-应用Rails进行敏捷Web开发(第3版).pdf

    英文新版:Agile Web Development with Rails, 4th Edition(For Rails 3.1 & 3.2) 内容简介 ...作为一位活跃的Rails开发者,他理解Rails。 汉森(David Heinemeier Hansson),是Rails框架的缔造者。

    Ruby on Rails开发 从入门到精通实战教程.rar

    本资源是一套关于Ruby on Rails开发的全面教程...动手实践: 在学习过程中,务必进行代码实践,跟随教程一步步实现项目,加深对知识的理解和掌握。 通过学习本资源,您将掌握Ruby on Rails开发的核心技术和实战应用。

    Web开发大全:Ruby on Rails版.part1

    在本书的每个章节中,都有与内容配合的详细实例,帮助读者快速理解并掌握使用ruby on rails进行web开发的步骤。  web开发的相关技术自身在不断发展中,ruby语言也在不断的完善和进步。本书的作者们试图紧跟rails...

    Web开发大全:Ruby on Rails版.part2

    在本书的每个章节中,都有与内容配合的详细实例,帮助读者快速理解并掌握使用ruby on rails进行web开发的步骤。  web开发的相关技术自身在不断发展中,ruby语言也在不断的完善和进步。本书的作者们试图紧跟rails...

    Web 开发敏捷之道(应用Rails 进行敏捷Web 开发第三版)

    就在此时,Rails 从天而降,而且它要 简单得多。 光有简单是不够的。这些人都是专业的软件开发者,他们编写的是真实的网站应用,他们希望自己 的产品经得起时间的检验,所以他们总是选择先进而专业的技术。这些...

    举例理解Ruby on Rails的页面缓存机制

    主要介绍了举例理解Ruby on Rails的页面缓存机制,本文来自于IBM官方网站技术文档,需要的朋友可以参考下

    深入理解Ruby on Rails中的缓存机制

    主要介绍了深入理解Ruby on Rails中的缓存机制,本文来自于IBM官方网站技术文档,需要的朋友可以参考下

    crono:Rails的基于时间的后台作业调度程序守护程序(就像Cron一样)

    它是Ruby,因此您可以理解和修改它以满足您的需求。 要求 经过最新的MRI Ruby 2.2 +,2.3 +,Rails 4. *和Rails 5. *的测试。 其他版本未经测试,但可能工作正常。 安装 将以下行添加到应用程序的Gemfile中: gem ...

    powerdns-on-rails:运行MySQL或PostgreSQL后端的PowerDNS的Rails前端

    感谢您的支持和理解。 PowerDNS on Rails PowerDNS on Rails是一个Ruby on Rails应用程序,旨在使用通用MySQL / PostgreSQL后端管理安装。 更多信息: 自述文件(此文件) 快速安装 进一步提供了使用Vagrant运行...

    skrollr-rails:将 skrollr javascript 库与 Rails 资产管道集成

    Skrollr-Rails 是一个独立的移动和桌面视差滚动库。 skrollr-rails gem 将 skrollr 与 Rails 资产管道集成,以便于使用和版本控制。 安装 将此行添加到应用程序的... 该插件使 IE 理解 opacity、rgb() 和 hsl()(带有

    以MVC的思维方式来理解Ruby on Rails框架的设计结构

    Ruby on Rails是Ruby世界中Web开发框架的代名词,人气相当之高,本文就带大家以MVC的思维方式来理解Ruby on Rails框架的设计结构,需要的朋友可以参考下

    yay:Ruby和Rails的SmartHR新手训练营

    因为要了解Rails,您首先需要了解Ruby。与任何语言和任何WAF一样,了解语言的特征并理解WAF在您脑海中的移动对于掌握WAF至关重要。 在上半部分,有一门Ruby课程首先要了解Rails。在下半年,我们将通过以使用为主题来...

    zen-rails-security-checklist:Ruby on Rails应用程序的安全预防措施清单

    Zen Rails安全清单概要本文档提供了开发Ruby on Rails应用程序时要实施的安全措施的不一定全面的列表。 它旨在用作快速参考,并最大程度地减少开发人员健忘造成的漏洞。 它并不能替代开发人员有关安全编码原则以及...

    paloma:Rails的页面特定JavaScript正确完成

    重要 master分支包含前沿开发代码。 检查branches或tags以获取... 易于理解(因为它是在Rails控制器之后构图的)。 最低要求 Rails 4.0.2或更高版本 快速范例 Paloma控制器: Paloma . controller ( 'Users' , { new

Global site tag (gtag.js) - Google Analytics