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

待续。。。。。。。。。。。

相关推荐