2 基础知识补充
来源:互联网 发布:软件架构.pdf 编辑:程序博客网 时间:2024/05/22 03:29
1. 模块
1.1 定义,含混
module ModuleName def moduleInfo puts "I am a method in Module" end def self.moduleInfo2 puts "类方法成员" endendclass PastInclude include ModuleName #混含操作 def classInfo puts "I am a method in class" endendtest=PastInclude.newtest.classInfotest.moduleInfoModuleName.moduleInfo2
I am a method in class
I am a method in Module
类方法成员
1.2 命名空间
module ModulePlace1 class FirstPlace def moduleInfo puts "I am in ModulePlace1, I am moduleInfo" end endendmodule ModulePlace2 class SecondPlace def moduleInfo puts "I am in ModulePlace2, I am moduleInfo too" end endendtest1=ModulePlace1::FirstPlace.newtest1.moduleInfotest2=ModulePlace2::SecondPlace.newtest2.moduleInfo
I am in ModulePlace1, I am moduleInfo
I am in ModulePlace2, I am moduleInfo too
2. BEGIN END
BEGIN
块是注册初始化,限于该文件的任何语句来执行END
块是注册结束,会在解释器释放文件的时候执行at_exit
块与END
块相似,但执行时间比END晚
BEGIN{ puts "I am begin 1"}BEGIN{ puts "I am begin 2"}BEGIN{ puts "I am begin 3"}at_exit{ puts "I am at_exit 1"}at_exit{ puts "I am at_exit 2"}at_exit{ puts "I am at_exit 3"}END{ puts "I am end 1"}END{ puts "I am end 2"}END{ puts "I am end 3"}
I am begin 1
I am begin 2
I am begin 3
I am end 3
I am end 2
I am end 1
I am at_exit 3
I am at_exit 2
I am at_exit 1
3. 导入
3.1 load,require
同一文件夹下创建两个.rb
文件
5Model1.rb
module Module1 def saySomething puts "我只是个Module1中的普通的方法" end def self.singSong puts "我是Module1 中的类方法" endendModule1.singSong
6Module2.rb
puts "加载Module1...."load "5Module1.rb" #加载本文件夹中的另一Ruby文件
运行6Module2.rb
加载Module1….
我是Module1 中的类方法
require 不仅可以加载Ruby文件,还可以加载其他语言写的源文件
同一文件夹两Ruby文件:
ModuleA.rb
def moduleA puts "I am moduleA"end
ModleB.rb
require "#{File.dirname(__FILE__)}/moduleA"moduleA
运行ModleB.rb
I am moduleA
3.2 extend
在类中引入模块,并且将模块中的方法作为类方法
module Module1 def saySomething puts "Hi..." endendclass Man extend Module1endhe=Man.new#用he.saySomething 会有错误he.extend(Module1)he.saySomething
Hi…
4. 别名
def sing puts "I sing a song, its name is Old Man"endalias singNew singdef sing puts "I sing a song, its name is What"endsing # 新定义的singsingNew #仍旧绑定之前没有被重新定义的方法
I sing a song, its name is What
I sing a song, its name is Old Man
5. 对定义操作
class Person def saySomething puts "Good morning!" puts defined? "hello" endendhe=Person.newhe.saySomethingputs defined?he.saySomething
Good morning!
expression
method
释放定义用undef
6. method_missing
class Student def doHomework puts "I can do homework" end def method_missing pd puts "我不会#{pd.to_s}啊!" end def self.method_missing pd puts "我也不会 #{pd.to_s}。。。" endendhe=Student.newhe.doHomeworkhe.eatStudent.goHome
I can do homework
我不会eat啊!
我也不会 goHome。。。
0 0
- 2 基础知识补充
- 基础知识补充
- 8086汇编2:补充点基础知识
- sql 基础知识补充
- java基础知识补充
- RMAN 基础知识补充
- Java基础知识--补充
- 数论基础知识补充
- RMAN基础知识补充
- 指针的基础知识补充
- 4.8、SSRS-基础知识补充
- Java基础知识总结-补充
- Java基础知识补充
- Swift基础知识补充(一)
- Swift基础知识补充(二)
- Swift基础知识补充(三)
- C语言基础知识补充
- python 基础知识补充
- bzoj 1180 [CROATIAN2009]OTOCI - LCT
- Photoshop CS5教程:运用图片包和联系表功能快速排版照片
- 一文弄懂神经网络中的反向传播法——BackPropagation
- Win7 如何安装Python依赖库
- asp.net MVC 之 Controller.RedirectToAction 方法 详解
- 2 基础知识补充
- js+div+css展示页面
- ssm
- BOW模型理解
- 设计模式之组合模式14
- Protobuf 3.0.0 安装入门
- WPF中使用Echarts显示图表
- 用三段 140 字符以内的代码生成一张 1024×1024 的图片
- maven寻找依赖的流程