Ruby_语法_百分号%_笔记_搜集整理
Ruby_语法_百分号%_笔记_搜集整理
?
??? 在Ruby语言中到处充斥着语法糖衣,有很多的惯用表示法,对于初学者来说,往往被这些技巧搞得晕头转向。?? ??
????%{String}? 用于创建一个使用双引号括起来的字符串?
????%Q{String}?用于创建一个使用双引号括起来的字符串?
????%q{String}?用于创建一个使用单引号括起来的字符串?
????%r{String}?用于创建一个正则表达式字面值?
????%w{String}?用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换(#{}当成普通字符)?
????%W{String}?用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换(#{}当成替换字符)?
?
????%s{String}?用于生成一个符号对象?
????%x{String}?用于执行String所代表的命令?
????PS:上面几个%表示法中用{}扩住了String,其实这个{}只是一种分割符,可以换成别的字符,比如(),那么%表示法就是%(String),当然还可以是别的字符,对于非括号类型的分割符,左右两边要相同,如%!String!?
??? 下面我对这些表示法简单举几个例子:?
????%{String}用于创建一个使用双引号括起来的字符串?
??? 这个表示法与%Q{String}完全一样,这边直接句个例子看结果:?
??? 结果:
????%Q{String}用于创建一个使用双引号括起来的字符串?
????%q{String}用于创建一个使用单引号括起来的字符串?
??? 从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具体看例子。先看%Q{String}:
??? 结果:
??? 换成%q{String}:
??? 结果:
??? 从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。?
????%r{String}用于创建一个正则表达式字面值?
??? 就像使用/reg/方式一样,看代码:
??? 结果:
??? 可以看出,world从第6个字符开始匹配?
????%w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换?(#{}当成普通字符)?
????%W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换(#{}当成替换字符)??
?
??? 这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真是会惯坏大家,以后大家都不用标点符号了。?
??? 同样给一个简单的例子:
??? 结果:
????%s{String}用于生成一个符号对象?
??? 直接先上代码:
??? 结果:
?
??? 可以看出,这两中方式生成的symbol对象完全一样?
????%x{String}用于执行String所代表的命令?
??? 比如:?
??? %x{notepad.exe}可以启动windows下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)。大家自己试试看?
?
?
参考:http://meladet.iteye.com/blog/440195?感谢作者!!
?
?
?
……
……
……
*|*
……
……
……