首先安装 ruby
安装 rvm => ruby => rubymine
首先是数组的创建
names = [ ] #定义一个空数组
names = Array.new #创建数组
names = Array.new(20) #设置数组的大小
我们还可以返回数组的长度
names = Array.new(20)
puts names.size # 返回 20
puts names.length # 返回 20
数组的运算
<< :追加元素
+ :串联方法
- :数组差集
& :数组交集
| :数组并集
* :重复数组,如果*后面是整数,则返回重复整数次的数组,如果是字符串,则返回重复使用该字符串连接数组。
- [1,2] << 3 #[1,2,3]
- [1,2] + [1,2] #[1,2,1,2]
- [1,2,3] - [3,4] #[1,2]
- [1,2,3] & [3,4] #[3]
- [1,2,3] | [3,4] #[1,2,3,4]
- [1,2] * 2 #[1,2,1,2,1,2]
- [1,2] * '--' #1--2
数组的常用方法
array.at(index) 返回索引为 index 的元素。一个负值索引从 self 的末尾开始计数。如果索引超出范围则返回 nil。
array.clear 从数组中移除所有的元素
array.compact 返回 self 的副本,移除了所有的 nil 元素
array.delete_at(index) 删除指定的 index 处的元素,并返回该元素。如果 index 超出范围,则返回 nil
array.empty? 如果数组本身没有包含元素,则返回 true
array.eql?(other) 如果 array 和 other 是相同的对象,或者两个数组带有相同的内容,则返回 true
array.first [or] array.first(n) 返回数组的第一个元素或前 n 个元素
array.join(sep=$,) 返回一个字符串,通过把数组的每个元素转换为字符串,并使用 sep 分隔进行创建的
array.last [or] array.last(n) 返回 self 的最后一个元素。如果数组为 空 ,则第一种形式返回 nil
array.pop 从 array 中移除最后一个元素,并返回该元素
array.push(obj, ...) 把给定的 obj 附加到数组的末尾
array.reverse 返回一个新的数组,包含倒序排列的数组元素
array.sort [or] array.sort { | a,b | block } 返回一个排序的数组
array.uniq 返回一个新的数组,移除了 array 中的重复值
散列hash
定义hash
h = Hash.new
h = Hash[1=> 'a',2=> 'b']
h = {a=> '1',b=> '2'}
我们可以对hash进行简单的操作
items = [
{
barcode: 'ITEM000000',
name: '可口可乐',
unit: '瓶',
price: 3.00
},
{
barcode: 'ITEM000001',
name: '雪碧',
unit: '瓶',
price: 3.00
}
]
item[:barcode] # 对属性进行操作
item.push(item) #添加键值对
item.push(count:1) #添加属性
item << [ count : 1] #添加属性
hash常用方法
hash.clear 从哈希中移除所有的键值对
hash.[key] 使用键,从哈希引用值。如果未找到键,则返回默认值
hash.shift 从 hash 中移除一个键值对,并把该键值对作为二元素数组返回
hash.size 以整数形式返回 hash 的 size 或 length
hash.sort 把 hash 转换为一个包含键值对数组的二维数组,然后进行排序
hash.store(key, value) 存储 hash 中的一个键值对
hash.to_a 从 hash 中创建一个二维数组。每个键值对转换为一个数组,所有这些数组都存储在一个数组中
hash.to_s 把 hash 转换为一个数组,然后把该数组转换为一个字符串
hsh.invert:返回逆转Hash的键和值的新Hash