• 《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的时候不执行,另外条件都为真。

  • 相关阅读:
    抽奖概率算法
    redis启动异常
    php如何快速读取大文件
    nginx反向代理解决跨域
    sublime修改侧边栏字体
    curl
    公众号开发一
    数组
    在windows下用vagrant建立lnmp开发环境
    gets--vs--fgets
  • 原文地址:https://www.cnblogs.com/sidianok/p/12970806.html
Copyright © 2020-2023  润新知