51Testing软件测试论坛

标题: ruby中nil和""、''三者的区别是什么啊 [打印本页]

作者: chenzhong24    时间: 2011-1-24 11:28
标题: ruby中nil和""、''三者的区别是什么啊
nil   空双引号 空单引号 三者的区别在哪里啊
作者: haoyunlyh    时间: 2011-1-24 13:34
1、单引号和双引号。 单引号不会对里面的字符进行转义,类似于”\n”这样的转义会直接输出,也不能包含表达式。双引号则可以包含转议字符,也能包含表达式,表达式的格式为 #{xxxx}。需要注意的是,如果单引号里的字符串也包含单引号,还是要用“\’”进行转义的,这个转义是支持的。

=======================

a = “abc”

b = “1\n2\n3\n#{a}”

c = ‘1\n2\n3\n#{a}’

puts b          #=> 1   2   3   abc

puts c          #=>    1\n2\n3\n#{abc}

=======================

2、另外nil是一个独立的对象。好象是用来表示“null”的。

第2点不是很确认,是推出来的。
作者: chenzhong24    时间: 2011-1-24 13:56
不是说单引号不能包含表达式 又怎么会  puts c          #=>    1\n2\n3\n#{abc}
不是应该 puts c          #=>    1\n2\n3\n#{a}
作者: chenzhong24    时间: 2011-1-24 13:57
def int_vlan_conf_list1(deviceName,vlanid)
    #获取交换机数据
    rs = get_commands_info(deviceName,"dis vlan #{vlanid}")
    #定义公用参数
    vlanlist = []
    #字符串处理
    st = rs.index(/VID\s+Type\s+Ports/).to_i
    ed = rs.index(/VID\s+Status\s+Property/).to_i
    rs1 = rs[st..ed]
    rs1 = rs1.split("\n")
    s = ''
    rs1.each{|item|        
        vlanid = ''
        vlantype = ''
        status = ''
        #if /(\d+)\s+(\w+)\s+(enable|disable)\s+default/i.match(item) && $1 !=nil
        if item == ""
            next
        end
        if /(\d+)\s+(\w+)\s*/.match(item)
            vlanid = $1
            vlantype = $2            
        end
        if vlanid == ""
            next
        end
        rs.each_line{|item2|
            if /(#{vlanid})\s+(enable|disable)\s+default/i.match(item2)
                status = $2
            end
            }
        ds = get_commands_info(deviceName,"vlan #{vlanid}
            dis th")
        if /description\s+(\S+)/mi.match(ds)
            description = $1            
        end
        if description == nil
            description = "VLAN" + change_vlanid(vlanid)
        end
        list = "接口列表"
        s = vlanid+vlantype+"Vlan"+status+description+list
        vlanlist << s
    }
   
    #返回数据
    return vlanlist
end
作者: chenzhong24    时间: 2011-1-24 13:57
本帖最后由 chenzhong24 于 2011-1-24 13:59 编辑

看看偶写的脚本,^_^
作者: haoyunlyh    时间: 2011-1-24 14:08
[quote]不是说单引号不能包含表达式 又怎么会  puts c          #=>    1\n2\n3\n#{abc}
不是应该 puts c         ...
chenzhong24 发表于 2011-1-24 13:56


你是对的,表达式,不会被展示出来。#=>    1\n2\n3\n#{a}
作者: haoyunlyh    时间: 2011-1-24 14:12
Ruby nil的意思实际上是null的意思,当我们选取某个对象的属性时,首先要判断的就是对象是否为nil,就是是否为null。为nil,则不取其值。
a!=nil   不为空
a!=''     不为空字符串
a!=""      也是不为空字符串。
至于单引号和双引号,看上面的解释。

另外你的脚本太多,没时间去看!
作者: chenzhong24    时间: 2011-1-24 14:14

作者: fyydhsw    时间: 2011-4-26 07:31





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2