一:ruby重要特点
Ruby是解释型语言。(提高了调试速度,执行效率低)
变量没有类型 (错误检查功能也变弱了)
所有变量均无需声明即可使用
语法比较简单,类似 Algol
具有自动垃圾回收机制(能自动回收不再使用的对象)
纯粹的面向对象语言,基本的类型都是对象
迭代器功能可以将循环抽象化,使得代码更加简介
强大的字符串操作功能,和正则表达式检索功能
可以计算非常大的整数
可以直接访问操作系统(使用ruby可以进行操作系统编程)
可以对某对象添加方法
用模块进行混合插入
闭包,可以把某过程片段对象化,对象化后的该过程片段称为闭包
具有错误处理功能
动态加载(如果操作系统允许,可以在运行的时候读入对象文件
二:输出的三种方式
puts "One"
print "two"
printf "three"
puts "fout"
输出结果:
One
twothreefout
可以得出结论:puts 换行,print不换行,printf不换行
三:单引号,双引号
一般情况下这两种引号通用,可以互相嵌套。
转义字符是:\
puts "hello world '"
puts 'hello world "'
puts 'supan said:"I \'love\' you"'
输出:
hello world '
hello world "
supan said:"I 'love' you"
四:连句
由上面的语句开一看到,每条语句都是占用一行,并且不用分号。
如果需要在一行上写多条语句,需要用分号隔开例如:
puts "chen"; puts "chao"; puts "yang"
输出:
chen
chao
yang
五:换行
puts 默认的会在打印的字符串后天添加一个换行符\n(如果要打印的字符后面已经有
换行符就不会添加,如果需要打印两个换行符需要添加两个\n\n)
print不会换行,printf也不会换行
puts "chenchaoyang"
puts "chenchaoyang\n"
puts "chenchaoyang\n\n"
puts "123456"
输出:
chenchaoyang
chenchaoyang
chenchaoyang
123456
六:连行符 \
当语句过长时会影响阅读,希望分成多行去写,但不希望语句逻辑
被中断,在这种情况下一种方式是用字符串连接符号连接语句,但是
字符串连接符属于运算符,因此字符串连接是消耗资源的,而连行符属于格式控制字符,
提倡使用
puts "chenchao
yang"
puts "chenchao\
yang"
输出:
chenchao
yang
chenchaoyang
七:注释符
两种:
单行:用#开头
多行:用=begin 开头 =end结束
puts "chenchaoyang a"
#puts "chenchaoyang a"
puts "chenchaoyang c"
=begin
puts "chenchaoyang"
puts "chenchaoyang"
puts "chenchaoyang"
puts "chenchaoyang"
puts "chenchaoyang"
=end
puts "chenchaoyang c"
输出:
chenchaoyang a
chenchaoyang c
chenchaoyang c
八:局部变量
ruby中的变量是不能脱离类而存在的,局部变量就是普通变量
以小写字母或下划线开头
局部变量在使用之前如果不被初始化将会出错
a = "chenchaoyang"
puts a
puts b
b = "chenchaoyang"
puts b
输出:
G:/Myeclipse20130521/helloruby/helloworld.rb:3:in `<main>': undefined local variable or method `b' for main:Object (NameError)
chenchaoyang
九:基本输入
ruby中使用gets方法来解决最基本的输入问题,例如
可以用a= gets来将用户输入的字符保存到局部变量a中
注意:ruby中使用=作为赋值符号
a = gets
puts a
输出:
在控制台输入“chenchaoyang"按下enter键
输出:chenchaoyang
十: 数字和字符串连接符
数字可以有前缀:
0表示8进制
0x表示16进制
0b表示2进制
puts 0
puts 1
puts 1.5
puts 0.62
puts 0123
puts 0X5BC
puts 0b0011
输出:
1
1.5
0.62
83
1468
3
ruby中字符串连接符用+
a = "chenchao"
b = "yang"
puts a + "&" + b
输出:chenchao&yang
十一:类
ruby是面向对象比java更纯粹,一切都是对象,所以ruby中
没有函数,只有方法。bugy中所有的变量,常量都不能脱离
类而存在,故而,在介绍了最基本的知识之后,紧要的就要
介绍类。
ruby中类名用大写字母开头,
实例属性以@开头,变量和方法名应该用小写字母或下划线开头
假设要定义的类名为"Man"包含 name 和age两个实例属性
sayname sayage方法,
定义类的方法使用def……end 语句块如果方法有返回值可以
return语句,类的初始化用innitialize方法,相当于java和c++
中的构造函数
在ruby中所有类的父类是Object
十二:类的基本使用
实例化类的时候用 类名.new()
属性可以不定义
例如:
#类的开头用class关键字
class Man
#def开头的表示的类的方法,这个innitialize方法是构造方法
def initialize(name,age)
#name表示的是类的属性
@name = name
#age表示的是类的属性
@age = age
end
#定义类的方法
def sayname
puts @name
end
#定义类的方法
def sayage
puts @age
end
#类的结束用end关键字
end
puts "11111111"
#实例化类的时候用new关键字
m = Man.new("chenchaoyang",27)
m.sayname
m.sayage
n = Man.new("chenziyang",35)
n.sayname
n.sayage
puts "222222"
输出:
11111111
chenchaoyang
27
chenziyang
35
222222
十三:类的继承
用关键符号: <
例如:我们要定义一个Chinese类继承上面的Man类
注意:ruby文件中包含中文需要在文件的第一行中
写上:# encoding: utf-8
增加一个love方法:
# encoding: utf-8
class Man
def initialize(name,age)
@name = name
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
puts "11111111"
m = Man.new("chenchaoyang",27)
m.sayname
m.sayage
n = Man.new("chenziyang",35)
n.sayname
n.sayage
puts "222222"
class Chinese < Man
def love
puts "我非常爱我的妈妈"
end
end
chenchaoyang = Chinese.new("chenchaoyang",27);
chenchaoyang.sayname
chenchaoyang.sayage
chenchaoyang.love
输出:
11111111
chenchaoyang
27
chenziyang
35
222222
chenchaoyang
27
我非常爱我的妈妈
十四:类的继承,在子类中调用父类的同名函数用super关键字
注意如果要调用父类中的方法含有参数用super(参数)的方式调用
例子:
# encoding: utf-8
class Man
def initialize(name,age)
@name = name
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
puts "11111111"
m = Man.new("chenchaoyang",27)
m.sayname
m.sayage
n = Man.new("chenziyang",35)
n.sayname
n.sayage
puts "222222"
class Chinese < Man
def sayname
super
puts "这是从子类的方法中打印出来的"
end
end
chenchaoyang = Chinese.new("chenchaoyang",27);
chenchaoyang.sayname
chenchaoyang.sayage
输出:
11111111
chenchaoyang
27
chenziyang
35
222222
chenchaoyang
这是从子类的方法中打印出来的
27
待续。。。。。。。。。。。