Ruby基础知识之数据类型

2019-09-25 09:44:11刘景俊

s1=<<Header
sdfie''''//////[]
Header
puts s1

字符串操作
(1)用+号进行字符串连接。对于不是字符串的需要to_s方法进行显示转换,才能用于连接。注意的是,连接后的字符串会新建一个对象返回。
(2)用<<号进行字符串连接。此操作符连接字符串,是修改左侧字符串,而不新建对象。
(3)用*号表示重复左侧字符串,
(4)字符串截取
通过[]来访问字符串中的子字符串。字符串可以作为字符数组来看待。如果索引为负数,则从右向左取字符。(在1.8和1.9中通过[]访问返回的不同,1.9中取的更符合习惯)
通过[]索引访问进行赋值操作,可以替换字符。
通过[]中两个值进行访问,可以截取子字符串
(5)通过range截取子字符串。
通过range表示的两个都是索引,这个区别于[]中以逗号分隔的一个用于索引,另一个用于长度。
[..]或[…]
其中两个点的为包含区间。
(5)通过索引字符串,来判断包含关系
通过[“字符串']来判断是否包含此子字符串
(三)字符类型

字符类型通过?+字符来定义。

(四)数组

数组字面量通过[]中以逗号分隔定义,且支持range定义。同时,数组字面量引用同%q,%Q类似的%w,%W分界符。中间以空格分隔。
(1)数组通过[]索引访问
同字符串相似,数据通过索引进行访问。如果有两个数值,则一个表示索引,另一个表示元素个数
(2)通过赋值操作插入、删除、替换元素
(3)通过+,-号进行合并和删除元素,且集合做为新集合出现
(4)通过<<号向原数据追加元素
(5)通过*号重复数组元素
(6)通过|和&符号做并集和交集操作(注意顺序)
(五)哈希类型
哈希字面量由逗号分隔的kv对来定义,被包括在花括号之间,kv对以=>来定义

#hash
h1={"a1"=>1,"a2"=>2}
h2={:a1=>3,:a2=>4}
h3={a1:5,a2:6}
 
puts h1["a1"]
puts h2[:a1]
puts h3[:a1]

(六)范围类型
通过..或…符号定义范围类型,它有顺序性。
(七)true,false,nil
比较nil值,可以通过:
Ojb==nil或
Obj.nil?
(八)对象标识、对象的类、类型
对象标识在1.9中可以通过:
__id__得到,或object_id
 
对象的类:

Obj.class==String或
Obj.instance_of? String
 
x1="ok"
puts x1.class==String
puts x1.instance_of?String

判断是不是一种类型的实例也可通过:is_a?或===

x1="ok"

puts x1.is_a?String
puts x1===String

(九)对象冻结、污染