《Rubu基础教程第五版》第二章笔记 便利的对象

2.1数组 对于Python中的列表list

基本操作与Python差不多,有一个区别就是

irb(main):016:0> arr
=> []
irb(main):017:0> arr[5]='a'
=> "a"
irb(main):018:0> arr
=> [nil, nil, nil, nil, nil, "a"]
irb(main):019:0> 

 给一个超过索引范围的,会给一个值,前面的空位会填充nil

arr.size查看数组的大小

数组的循环

通过each方法实现

数组.each do |变量|

希望循环的处理

end

each后面的do~end之间的部分称为块(block)。each这样的方法称为带块的方法

>> name = ["xiao","大"]
=> ["xiao", "大"]
>> name.each do |n|
?> p n
>> end
"xiao"
"大"
=> ["xiao", "大"]
>> 

散列   对应Python中的列表

散列(hash)也是一个程序中常用的容器。在散列中,一般是以字符串或者符号作为键来保存对应的对象

什么是符号

符号(symbol)与字符串对象很相似,符号也是对象,一般作为名称便签使用,表示方法等的对象的名称。

要创建符号只要在标识符的开头加上:就可以了

>> sym = :foo
=> :foo
>> sym2 = :"foo"   # 效果与第一个相等
=> :foo
>> 

 符号能实现的功能,大部分字符串也能实现。但在想散列的键这样只是单纯判断"是否相等"的处理中,使用符号会比字符串更加有效率,因此在实际编程中我们也会时常用到符号。

另外,符号与字符串可以互相转换。对符号使用to_s方法,则可以得到对应的字符串。反之,对字符串使用to_sym方法,则可以得到对应的符号

 >> sym
=> :foo
>> sym.to_s
=> "foo"
>> "foo".to_sym
=> :foo
>> 

散列的创建

>> hash1 = {"a":1,"b":2}
=> {:a=>1, :b=>2}
>> hash1 = {"a"=>1,"b"=>2}
=> {"a"=>1, "b"=>2}
>> hash2 = {:a=>1,:b=>2}
=> {:a=>1, :b=>2}
>> 

 创建可以通过=>创建,如果使用:创建的话,key会编程symbol

散列的使用(与Pythondict基本相同)

通过key取值与赋值

散列的循环

同样通过each

 >> address = {name:"la",pingying:"olal"}
=> {:name=>"la", :pingying=>"olal"}
>> address.each do |key, value|
?> puts "#{key} is #{value}"
>> end
name is la
pingying is olal
=> {:name=>"la", :pingying=>"olal"}
>> 

正则表达式

/模式/  ,用=~来匹配正则表达式和字符串

/模式/ =~ 希望匹配的字符串

匹配成功返回字符的位置,从0开始,返回返回nil

>> /Ruby/ =~ "I like Ruby much"
=> 7
>> /Ruby/ =~ "Ruby"
=> 0
>> /Ruby/ =~ "R1uby"
=> nil
>> 

在表达式的后面,也就是右边加上i会忽略大小写

>> /Ruby/i=~"ruby"
=> 0
>> /Ruby/i=~"rubY"
=> 0
>> 

nil是一个特殊的值,表示对象不存在。像正则表达式无法匹配就返回nil,数组或者hash取不到值的时候也会返回nil

if 条件在 nil与false的时候不执行,另外条件都为真。

原文地址:https://www.cnblogs.com/sidianok/p/12970806.html