Ruby 语法(二)

来源:互联网 发布:substr linux 编辑:程序博客网 时间:2024/04/24 08:46

重写:

       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...

 

 

原创粉丝点击