现在的位置: 首页 > 综合 > 正文

Ruby 语法(二)

2013年04月10日 ⁄ 综合 ⁄ 共 2020字 ⁄ 字号 评论关闭

重写:

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

 

 

抱歉!评论已关闭.