Ruby中的|XXX|意义

Python015

Ruby中的|XXX|意义,第1张

在 ruby 中,{|args| statements} 叫做 匿名函数,就是没有名字的小型函数。然后 each_byte 是一个方法,它接收一个可调用对象。

有时候左花括号可以用 do 代替,有花括号用 end 代替,就是

do |args|

statements

end

这种形式。

这个怎么说好呢,它们无非就是一些运算符而已,每个符号的用法也有很多种,具体怎么用可以通过看书、看例子来学习,没必要一下记住那么多。比如:%#取余运算,如8%3=2{}#可用在输出,如输出y的值:puts"#{y}",也可用在Hash表如 $R_Key_Hash = {} . #一般表示某种属性或方法,如对于一个窗口,self.x = 0 表示这个窗口的x坐标为0。 又如Class Person def Hello puts "Hello,my name is Tom." endendp=Person.newp.Hello #执行这个程序就会输出 Hello,my name is Tom.? #表判断,如opacity = black_color ? 255 : 128,这个意思是如果是黑色,就不透明,否则为128, #逗号在数组中较常见,如a = ["1","2","3"],数组a的三个元素依次是1,2,3‘ #这个在对文件的操作比较常见,如下例: if Dir.glob('txt').size == 0 #如果文件夹txt不存在Dir.mkdir('./txt') #那么生成一个名字叫txt的文件夹 end ! # 表示 非 如 if x != 2 表示如果x不等于2: #这个可能用在属性里如:class Game_Picture attr_reader :number # 图片编号 attr_reader :origin # 原点 attr_reader :x# X 坐标 attr_reader :y# Y 坐标 attr_reader :tone # 色调 attr_reader :angle# 旋转角度end #分号的话,一般是写程序每行结束才用到,但其实ruby的每行结束是可以不用分号的,回车换行就行,我也只是在用Interactive Ruby编译器时才会用分号从我上边的回答可看出,基本每个符号都用几种用法,平时多学习,多积累就好了

我们经常要在子类的initialize方法中调用super和super()。

从语法上说super和super()是有微妙区别的。

super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;

super()带括号则表示调用父类的同名函数,但是不传入任何参数;

演示代码如下:

1class SParent

2def initialize *args

3args.each {|arg| puts arg}

4end

5end

6

7class SChild <SParent

8def initialize a, b, c

9super

10end

11end

12

13a, b, c =*%W[a b c]

14SChild.new a, b, c # puts a, b, c if super

15SChild.new a, b, c # puts nothing if super()

可以看出当SChild的initialize中调用super()时,代码是不会打印任何信息的。这是因为super()没有向SParent的initialize方法传任何参数。