Ruby中的%表示法(百分号表示法)
转自:?http://hi.baidu.com/hbxiao135/blog/item/4b28bf166985f15df3de32db.html
?
在result = %{hello} puts "result is: #{result}, Type is:#{result.class}"
?
结果:
?
result is: hello, Type is:String
?
?
%Q{String}用于创建一个使用双引号括起来的字符串?
%q{String}用于创建一个使用单引号括起来的字符串?
从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具 体看例子。先看%Q{String}:?
?
world = "world" result = %Q{hello #{world}} puts "result is: #{result}, Type is:#{result.class}"
?
结果:
result is: hello world, Type is:String?
world = "world" result = %q{hello #{world}} puts "result is: #{result}, Type is:#{result.class}"?
结果:?
result is: hello #{world}, Type is:String从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。?
result = %r{world} puts result =~ "hello world" puts "result is: #{result}, Type is:#{result.class}"
结果: 6?
result is: (?-mix:world), Type is:Regexp?
结果:
result is: helloworld, Type is:Array, length is:2
%s{String}用于生成一个符号对象?
直接先上代码:?
result = %s{hello world} puts "result is: #{result}, Type is:#{result.class}" sym = :"hello world" puts "the two symbol is the same: #{sym == result}" ?
结果:?
result is: hello world, Type is:Symbol the two symbol is the same: true
?