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

方法

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的多继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值