- 浏览: 248296 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
Class类是Module的子类,类是一种特殊形式的模块,这个可看我的这篇文章 一步一步学Ruby(五): Class, Module, Object,Kernel的关系。
我们知道最顶级的类是Object,那么最顶级的模块就是Kernel
我们使用模块的的主要目的是用来组织代码,模块化代码,有点类似命名空间,但却有很大的不同
一、创建和使用模块
用module关键字来定义模块
module没有实例,我们使用时把module混合到类中来使用,我们也可以这么理解,把Module里的内容拷贝一份放到类里,成为类的一部分
我们可以把模块放到一个单独的文件里,然后使用时进行加载,看下面的示例,假设我们有一个project.rb的文件,包含了Project模块
我们将Project混合到Manager类里
注意: 在使用require或load时,请求加载的内容放到引号里,而inclue不是用引号,这是因为require或load使用字符串做为参数,而include使用常量形式的模块名,require和load使用字符串变量也可以.
二、混合进模块的类的方法查找
上面say方法查找路径为 D类-->D类里包含的模块-->C类-->C类包含的模块......>Object-->Kernel,当找到第一个时,搜索停止。
同名方法的查找,后面覆盖前面的
用super提升查找路径(调用查找路径上下一个匹配的方法),同样我们使用super可以调用父类的同名方法,initialize是自动执行
- super 调用时,自动传递当前的参数
- super(),不传任何参数
- super(a,b,c) 传递指定的参数
三、模块和类可以相互嵌套
module也可以包含类,但调用时需要这样使用 模块名::类名.new
本文作者: 王德水
未经同意,禁止转载
发表评论
-
ASP.NET MVC源码现在可以下载了(翻译)
2008-03-22 09:44 906上个月我在blog里介绍了ASP.NET MVC Roadm ... -
ASP.NET MVC+LINQ开发一个图书销售站点
2008-03-29 17:12 1301园子里已经有很多人讲解了其理论知识,网上也有不少示例,但是很多 ... -
Linq to SQL Dynamic 动态查询
2008-04-01 15:09 1021在开发中我们常需要使用动态的条件来组合查询,scotte博客里 ... -
使用ASP.NET 3.5 Extensions管理浏览器历史:使用服务器端
2008-04-08 13:15 596我们知道当我们使用ASP.NET AJAX的一些方便的服务端控 ... -
客户比产品更重要
2008-04-12 15:49 610发现博客园里99%都是技术文章,很少有管理的经验分享 ... -
WPF 全球化和本地化(图解)
2008-04-12 16:15 803当您将自己的产品限制为只能通过一种语言使用时,您便将潜在的客户 ... -
项目经理如何参与任务管理
2008-04-14 17:55 652每个项目经理可能都会 ... -
.NET环境下每日集成
2008-04-24 17:36 1360本系列主要介绍了.Net环境下如何使用CruiseContro ... -
项目经理虚拟管理客户
2008-05-28 11:26 534项目经理做项目时经常 ... -
从中国男足看项目管理
2008-06-16 11:39 406国足1:2 不敌伊拉克后,彻底无缘本届世界杯,我想比赛时和赛后 ... -
敏捷的 "道"
2008-11-19 14:10 485本文摘要 敏捷的路上 ... -
在服务器端保存ViewState
2008-11-20 16:51 5511.比较 Asp.net 的一个强大的功能就是ViewStat ... -
TDD实验2:使用VSTS 的单元测试功能
2008-12-10 08:25 775我们要实现的功能是,发工资时自动向我们发送邮件,如果工资少于1 ... -
TDD Tip:方法内部New出来的对象如何Mock
2008-12-16 00:27 1163解决的问题:方法内部new的对象在测试时希望能够用mock对象 ... -
Web测试:Selenium使用
2008-12-23 10:49 1593<style> .confluenceTable ... -
谈软件协作:君子和而不同,小人同而不和
2008-12-31 18:39 677我们知道现在的软件开 ... -
如何进行ASP.NET MVC 的测试
2009-01-05 00:48 1313本文参考了http://stephenwalther.com/ ... -
如何使ASP.NET MVC Controller易测试呢?
2009-01-05 23:25 949昨天那篇文章如何进行ASP.NET MVC 的测试,虽然通过自 ... -
ASP.NET MVC AJAX的调用
2009-01-10 08:21 3732在ASP.NET MVC beta中我们可以使用Ajax.Be ... -
IIS7 配置ASP.NET 2.0, WCF, ASP.NET MVC
2009-01-16 17:50 4586ASP.NET 2.0 部署 1.首先打开win7 的特性,路 ...
相关推荐
1.默认路径安装ruby186-26.exe 2.本地安装watir-1.4.1.gem,执行gem install watir-1.4.1.gem -l 3.本地安装rubygems-update-1.3.4.gem,执行 gem install rubygems-update-1.3.4.gem 4.更新rubygems,执行update_...
为了实时编译,我使用了 websocket-rails 和 coffeescript-rails 模块。安装该应用程序适用于 ruby 和 node.js; 如果你已经有了,你可以跳到Ruby您需要先在系统中安装 ruby,请按照以下步骤操作: 如果你...
:19|20)[0-9]{2})[\- \/.](0[1-9]|1[012])[\- \/.](0[1-9]|[12][0-9]|3[01])\z/使用Re之后,正则表达式可以短小易读的表达式为基础,一步一步地构建出来,例如: 代码如下:require ‘re’ include Re delim = re....
SkunkScore是一个评估模块技术债务的值。 它考虑到: 代码复杂度代码闻起来代码覆盖率SkunkScore的主要目标是在您的下一个重构冒险中充当指南针。 它将帮助您回答以下问题: 我该如何偿还技术债务? 什么是代码覆盖...
已经安装了brow的可以直接跳过这一步。 执行命令 ruby -e $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install) 如果已经安装过,而想要卸载: ruby -e $(curl -fsSL ...
一个好框架为你做出各种功能的实现,并且给你提供一步一步的编程指导。 提到框架时,就不能不提到著名的框架:Ruby on Rails。 Rails 做得相当成功,因为它籍由最少量的编码,提供简便快速的网站开发。本质上,它...
这是非常重要的一步,因为在此之后可以对网络进行清晰的评估。 良好的信息收集可以使成功的渗透测试与未能为客户提供最大利益的测试有所不同。使用方法该系统使用Django Web应用程序框架构建。 Django最初是为这家...
主模块-运行应用存放数据的容器容器传递给模块来工作InputParser->提取器->验证器-> DataParser->演示者InputHandler 解析输入选项和参数,创建对象以容纳选项和参数,如果选项和参数与规则兼容并传递到下一步,...
服务 服务将一个对象封装起来,该对象在可以启动或停止的循环中执行一些代码,并查询其是否正在运行。 安装 Bundler: gem 'service' RubyGems: gem install service ... 下一步是在对象上定义#exe
随着技术的发展,软件开发方法不断演进,测试一直都是不可或缺的一步。作为提升用户体验、保障软件质量的关键环节,软件测试至关重要。特别是面对多样化的测试需求、不断加快的版本迭代速度,如何围绕业务功能需求...
前面已经把ant的基本运行环境搭建好了,在接下来的工作中,将一步一步的开始构建我们的项目。选择项目目录结构:一个项目开始的时候,选择一个合适的项目目录结构,是一件很重要的事情,可能你会很习惯由IDE自动创建...
QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...
QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...