您的位置:首页 > 编程语言 > Ruby

Ruby学习笔记2(方法、块、模块)

2016-03-21 14:35 246 查看

方法

Ruby中的方法就是其他语言中的函数,名称应以小写开头,以免被解释为常量。参数可有可无,可以有默认值也可以没有。每个方法都有默认的返回值,就是最后一个语句的值。

def test(a1="Ruby", a2="Perl")
puts "编程语言为 #{a1}"
puts "编程语言为 #{a2}"
end
test "C", "C++"
test


要传入数量可变的参数:

def sample (*test)
end


alias和undef的用法还不太清楚

块是一段包含在{}内的代码

这段代码可以从别处调用。甚至像块来传递参数都是可以的,一个或多个参数。

def test
yield 5
puts "在 test 方法内"
yield 100
end
test {|i| puts "你在块 #{i} 内"}


另一种作为函数参数的调用方法:

def test(&block)
block.call
end
test { puts "Hello World!"}


在参数前面加上&代表接收一个块作为函数的参数。这个参数一般放在最后,特别是同时有*参数出现时。

可以声明BEGIN和END块,这将在文档被加载和程序运行完毕后被调用。

模块

模块存在的目的主要就是定义一个命名空间,使这个命名空间里的方法和常量不会和其他地方有冲突。

模块定义和类定义很像,模块方法和类方法定义也很像,调用模块方法就是模块名点上方法名。调用模块常量使用模块名双冒号常量名。

module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end


require语句用于引用已经有的模块。

include用于在类中嵌入模块。

module A
def a1
end
def a2
end
end
module B
def b1
end
def b2
end
end

class Sample
include A
include B
def s1
end
end

samp=Sample.new
samp.a1
samp.a2
samp.b1
samp.b2
samp.s1


这个例子用一种奇妙的方法实现了Sample对A,B的多继承。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ruby