重写:
Ruby支持缺省参数
:
def sum( a, b=5 )
a+b
end
puts sum(3,6) #9
puts sum(3) #8
Ruby还支持可变参数
def sum( *num
)
numSum = 0
num.each { |i| numSum+=i } //此处为迭代器,即i为
num.each { |i| }//此处可以输出num中的值
num.each { |i| print "i is "+ i } //each中可以有2个参数, 后面一个可以处理计算
return numSum
end
puts sum()
#0
puts sum(3,6)
#9
puts sum(1,2,3,4,5,6,7,8,9)
#45
如果我们只是想增强父类的方法
,而不是完全地替代它,就可以用关键字super
指明
class Person
def talk(name)
print "my name is #{name}."
end
end
class Student < Person
def talk(name)
super
print "and I'm a student./n"
end
end
aPerson=Person.new
aPerson.talk("kaichuan") #my name is kaichuan.
print "/n/n"
aStudent=Student.new
aStudent.talk("kaichuan") #my name is kaichuan.and I'm a student.
常量
: 如果一个变量,第一次赋值后,就不再允许改变变量值,这样的变量称之为常变量。常量名用大写字母开头。
变量
: 如果一个变量,在其作用域上的每一个执行点,都可以改变变量值,这样的变量称之为可变量
全局变量
: 如果一个变量,其作用域遍及在程序的任何位置,这样的变量称之为全局变量
局部变量
: 如果一个变量,其作用域仅限于在程序的某一单元的变量,称之为局部变量
实例变量
: 如果一个变量,只能被某个实例对象使用,这样的变量称之为实例变量
类变量
: 如果一个变量,能被某个类的所有实例对象共享,这样的变量称之为类变量。
全局变量
用$ 开头。
实例变量
,变量
名用@ 开头;
类变量,变量名用
@@ 开头。
局部变量名
用小写字母开头。
类变量
:类变量在使用前必须要初始化
,通过它可以计算学生的个数
class StudentClass
@@count=0
def initialize( name )
@name = name
@@count+=1
end
def talk
puts "I am #@name, This class have #@@count students."
end
end
p1
=StudentClass.new("Student 1 ")
p2
=StudentClass.new("Student 2 ")
p3
=StudentClass.new("Student 3 ")
p4
=StudentClass.new("Student 4 ")
p3.talk # I am Student 3 , This class have 4
students.
p4.talk # I am Student 4 , This class have 4 students.
类方法
:调用一个类方法,与定义类方法一样,要在方法名前加上类名和一个点号“.”。类方法提供了一个途径,在类的外部访问类变量,无须通过类的实例方法。
class StudentClass
@@count=0
def initialize
@@count+=1
end
def StudentClass.student_count
puts "This class have #@@count students
."
end
end
p1=StudentClass.new
p2=StudentClass.new
StudentClass.student_count # This class have 2 students.
p3=StudentClass.new
p4=StudentClass.new
StudentClass.student_count # This class have 2 students.
单例方法
:在Ruby里,可以给具体的实例对象添加实例方法,这个方法只属于这个实例对象
。定义单例方法,首先要生成一个实例对象
,其次,要在方法名前加上对象名和一个点号“.”。
class Person
def talk
puts "Hi! "
end
end
p1=Person.new
p2=Person.new
def p2.talk #定义单例方法p2.talk
puts "Here is p2. "
end
def p2.laugh #定义单例方法p2. laugh
puts "ha,ha,ha... "
end
p1.talk # Hello!
p2.talk # Here is p2.
p2.laugh # ha,ha,ha...