ruby基础1-14(基本类型,类的基本使用)
一: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"'
输出:
helloworld'
helloworld"
supansaid:"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"
输出:
chenchaoyanga
chenchaoyangc
chenchaoyangc
八:局部变量
ruby中的变量是不能脱离类而存在的,局部变量就是普通变量
以小写字母或下划线开头
局部变量在使用之前如果不被初始化将会出错
a = "chenchaoyang" puts a puts b b = "chenchaoyang" puts b
输出:
G:/Myeclipse20130521/helloruby/helloworld.rb:3:in`<main>':undefinedlocalvariableormethod`b'formain: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"
putsa+"&"+b
输出:chenchao&yang
十一:类
ruby是面向对象比java更纯粹,一切都是对象,所以ruby中
没有函数,只有方法。bugy中所有的变量,常量都不能脱离
类而存在,故而,在介绍了最基本的知识之后,紧要的就要
介绍类。
ruby中类名用大写字母开头,
实例属性以@开头,变量和方法名应该用小写字母或下划线开头
假设要定义的类名为"Man"包含name和age两个实例属性
saynamesayage方法,
定义类的方法使用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
待续。。。。。。。。。。。