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...
- Ruby 语法(二)
- Ruby 语法(一)
- Ruby 语法(三)
- ruby基本语法(2)
- Ruby 教程(二)
- Ruby 基础 (二)
- ruby语法
- ruby-语法
- ruby语法
- [ruby] 语法
- Ruby语法
- ruby语法
- Ruby 语法
- ruby 语法
- Ruby学习之旅(三):Ruby的基本语法
- Ruby String类(二)
- Ruby操纵数据结构(二)
- Ruby学习笔记(二)
- c 数据类型 运算符 表达式
- Linux字符设备驱动程序开发之笔记及摘要
- C#文本文件读写代码
- C/C++语言中的void及void指针类型
- 宏
- Ruby 语法(二)
- ORA-01102: cannot mount database in EXCLUSIVE mode
- 众多字符集编码的区别
- C#线程系列讲座(2):Thread类的应用
- 亚信“现金+股票”并购联创 价值7.3亿美元
- 乒乓1
- .Net 下通过缓存提高TCP传输速度
- 机器码转换
- Solutions to place plus or minus signs to a non-zero digits sequence 123456789 so that result of thus described arithmetic opera