首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Ruby_语法_百分号%_札记_搜集整理

2012-10-10 
Ruby_语法_百分号%_笔记_搜集整理Ruby_语法_百分号%_笔记_搜集整理???? 在Ruby语言中到处充斥着语法糖衣,

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}完全一样,这边直接句个例子看结果:?

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. result?=?%{hello}??
  2. puts?"result?is:?#{result},?Type?is:#{result.class}"??


??? 结果:

引用
result is: hello, Type is:String?



????%Q{String}用于创建一个使用双引号括起来的字符串?
????%q{String}用于创建一个使用单引号括起来的字符串?
??? 从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具体看例子。先看%Q{String}:

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. world?=?"world"??
  2. result?=?%Q{hello?#{world}}??
  3. puts?"result?is:?#{result},?Type?is:#{result.class}"??


??? 结果:

引用
result is: hello world, Type is:String?


??? 换成%q{String}:

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. world?=?"world"??
  2. result?=?%q{hello?#{world}}??
  3. puts?"result?is:?#{result},?Type?is:#{result.class}"??


??? 结果:

引用
result is: hello #{world}, Type is:String?


??? 从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。?

????%r{String}用于创建一个正则表达式字面值?
??? 就像使用/reg/方式一样,看代码:

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. result?=?%r{world}??
  2. puts?result?=~?"hello?world"??
  3. puts?"result?is:?#{result},?Type?is:#{result.class}"??


??? 结果:

引用
6?
result is: (?-mix:world), Type is:Regexp?


??? 可以看出,world从第6个字符开始匹配?

????%w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换?(#{}当成普通字符)?
????%W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换(#{}当成替换字符)??

?

??? 这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真是会惯坏大家,以后大家都不用标点符号了。?
??? 同样给一个简单的例子:

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. result?=?%w{hello?world}??
  2. puts?"result?is:?#{result},?Type?is:#{result.class},?length?is:#{result.length}"??

  3. x = 100
  4. puts %w(#{x} #{x})
  5. puts %W(#{x} #{x})


??? 结果:

引用
result is: helloworld, Type is:Array, length is:2?["\#{x}", "\#{x}"]["100", "100"]



????%s{String}用于生成一个符号对象?
??? 直接先上代码:

Ruby代码??Ruby_语法_百分号%_札记_搜集整理
  1. result?=?%s{hello?world}??
  2. puts?"result?is:?#{result},?Type?is:#{result.class}"??
  3. sym?=?:"hello?world"??
  4. puts?"the?two?symbol?is?the?same:?#{sym?==?result}"??


??? 结果:

引用
result is: hello world, Type is:Symbol?
the two symbol is the same: true?

?


??? 可以看出,这两中方式生成的symbol对象完全一样?

????%x{String}用于执行String所代表的命令?
??? 比如:?
??? %x{notepad.exe}可以启动windows下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)。大家自己试试看?

?

?

参考:http://meladet.iteye.com/blog/440195?感谢作者!!

?

?

?

……

……

……

*|*

……

……

……


热点排行