51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9800|回复: 8
打印 上一主题 下一主题

[原创] ruby中nil和""、''三者的区别是什么啊

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-1-24 11:28:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
nil   空双引号 空单引号 三者的区别在哪里啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-1-24 13:34:28 | 只看该作者
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点不是很确认,是推出来的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-1-24 13:56:49 | 只看该作者
不是说单引号不能包含表达式 又怎么会  puts c          #=>    1\n2\n3\n#{abc}
不是应该 puts c          #=>    1\n2\n3\n#{a}
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-1-24 13:57:27 | 只看该作者
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
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-1-24 13:57:35 | 只看该作者
本帖最后由 chenzhong24 于 2011-1-24 13:59 编辑

看看偶写的脚本,^_^
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2011-1-24 14:08:15 | 只看该作者
[quote]不是说单引号不能包含表达式 又怎么会  puts c          #=>    1\n2\n3\n#{abc}
不是应该 puts c         ...
chenzhong24 发表于 2011-1-24 13:56


你是对的,表达式,不会被展示出来。#=>    1\n2\n3\n#{a}
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-1-24 14:12:37 | 只看该作者
Ruby nil的意思实际上是null的意思,当我们选取某个对象的属性时,首先要判断的就是对象是否为nil,就是是否为null。为nil,则不取其值。
a!=nil   不为空
a!=''     不为空字符串
a!=""      也是不为空字符串。
至于单引号和双引号,看上面的解释。

另外你的脚本太多,没时间去看!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2011-1-24 14:14:49 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2011-4-26 07:31:20 | 只看该作者
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-21 13:56 , Processed in 0.073746 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表