[No000010] Ruby 中一些百分号(%)的用法小结

    #Ruby 中一些百分号(%)的用法小结
    #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下
what_frank_said = "Hello!"#%Q
    #用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\")
    puts %Q(1.Joe said: "Frank said: "#{what_frank_said}"")                #“#”不能省
=begin 执行结果
    => "1.Joe said: "Frank said: "Hello!"""
=end
    #(...)也可用其他非数字字母的符号或成对的符号代替, 诸如[...], !...!, +...+,{...}, <...>等.
    #以下写法全部与上面等效:
    puts %Q!2.Joe said: "Frank said: "#{what_frank_said}""!
    puts %Q[3.Joe said: "Frank said: "#{what_frank_said}""]
    puts %Q+4.Joe said: "Frank said: "#{what_frank_said}""+
#除此之外还可省略Q写作:
puts %/5.Joe said: "Frank said: "#{what_frank_said}""/
=begin 执行结果
    => "5.Joe said: "Frank said: "Hello!"""
=end
#%q
#与%Q类似, 但是表示的是单引号字符串
puts %q(6.Joe said: ‘Frank said: "#{what_frank_said}"‘)
=begin 执行结果
    => "6.Joe said: ‘Frank said: "#{what_frank_said}"‘"
=end
#%W
#语法近似于%Q, 用于表示其中元素被双引号括起的数组.
foo = "Foo"
arr = %W(#{foo} Bar Bar\ with\ space)
puts arr                    #=> ["Foo", "Bar", "Bar with space"]
#%w 
#用于表示其中元素被单引号括起的数组. 比较奇怪的是\(斜杠空格)会被转化成(空格), 但是其他的内容不会.
arrs =    %w(a b c\ d \#e #{1}f g\h)
puts arrs                    #=> ["a", "b", "c d", "\#e", "#{1}f", "g\h"]
#%x
#使用`方法执行一段shell脚本并返回标准输出内容.
puts %x(echo foo:#{foo})    #=> "foo:Foo\n"
#%r
#语法近似于%Q, 用于正则表达式.
puts %r(/home/#{foo})        #=> "/\/home\/Foo/"
#%s
#用于表示symbol, 但是不会对其中表达式等内容进行转化
puts %s(foo)                #=> :foo
puts %s(foo bar)            #=> :"foo bar"
puts %s(#{foo} bar)            #=> :"\#{foo} bar"
#%i
#Ruby 2.0 之后引入的语法, 用于生成一个symbol数组
sarr =%i(a b c)                #=> [:a, :b, :c]
puts sarr#总结:
#%{String}  用于创建一个使用双引号括起来的字符串
#%Q{String} 用于创建一个使用双引号括起来的字符串
puts %Q!Some String of “Characters”!            #=>"Some String of /”Characters/”"
#%q{String} 用于创建一个使用单引号括起来的字符串
puts %q!Some String of “Characters”!            #=>"Some String of “Characters”"
#%r{String} 用于创建一个正则表达式字面值
puts %r{/usr/bin/}                                #=> /\/usr\/bin\/
#%w{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
#%W{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换
puts %W(North South East West)                    #=> ["North", "South", "East", "West"]
#%s{String} 用于生成一个符号对象
#%x{String} 用于执行String所代表的命令
#puts %x{ ls /usr/local }                        #=> `ls /usr/local` linux下运行
#PS:上面几个%表示法中用{}扩住了String,其实这个{} 只是一种分割符,可以换成别的字符,比如(),那么%表示法就是%(String),当然还可以是别的字符,对于非括号类型的分割符,左右两边要相同, 如%!String!
#下面我对这些表示法简单举几个例子:
#%{String}用于创建一个使用双引号括起来的字符串
#这个表示法与%Q{String}完全一样,这边直接句个例子看结果:
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
#换成%q{String}:
world = "world"
result = %q{hello #{world}}
puts "result is: #{result}, Type is:#{result.class}"
#结果: result is: hello #{world}, Type is:String
#从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。
#%r{String}用于创建一个正则表达式字面值
#就像使用/reg/方式一样,看代码:
result = %r{world}
puts result =~ "hello --world"
puts "result is: #{result}, Type is:#{result.class}"
#结果: 8 result is: (?-mix:world), Type is:Regexp
#可以看出,world从第8个字符开始匹配
#%w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
#%W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换
#这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真 是会惯坏大家,以后大家都不用标点符号了。
#同样给一个简单的例子:
result = %w{hello world}
puts "result is: #{result}, Type is:#{result.class}, length is:#{result.length}"
#结果:result is: ["hello", "world"], 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
#可以看出,这两中方式生成的symbol对象完全一样
#%x{String}用于执行String所代表的命令,比如:
%x{notepad.exe}            #可以启动windows下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)。
时间: 2024-10-29 00:52:57

[No000010] Ruby 中一些百分号(%)的用法小结的相关文章

asp.net中Page.ClientScript.RegisterStartupScript用法小结(转)

//ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>if(confirm('保存成功!是否继续添加?')){location.href='ProductonAdd.aspx'}else{location.href='ProductonList.aspx'}</script>"); //后台弹出确定框 ClientScript.

Java中static、final用法小结(转)

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

1:CSS中一些@规则的用法小结 2: @media用法详解

第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule是一个声明,为CSS提供执行或怎么表现的指令.每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么.这是一个通用的语法,尽管每个at-rule有其它语法变体.常规规则 常规规则遵循下面的语法: 复制代码 代码如下: @[KEYWORD] (RULE); @charset

Java中static、final用法小结

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

c#多线程中Lock()关键字的用法小结

本篇文章主要是对c#多线程中Lock()关键字的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待. 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生.

Android中static和final用法小结

Java关键字static.final使用小结 static  1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的).对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变

Java中 static、final 用法小结

final final变量(在将关键字final加在定义的变量之前,即表明此变量一旦被初始化便不可改变.) 不可改变的具体意思是指: 基本类型 其值不可改变 对象变量 其引用不可改变 其初始化可以在两个地方进行(两者只能选其一): 变量的定义处(也就是说在final变量定义时直接给其赋值) 在构造函数中 当函数参数为final类型时,可以读取使用该参数,但是无法改变该参数的值. 在方法里面定义的内部类若是需要使用方法的参数时,此参数也必须声明为final才可使用 final方法(如果一个类不允许

asp.net中Page.ClientScript.RegisterStartupScript用法小结

ClientScript.RegisterStartupScript(Page.GetType(), "Show", "alert('" + l_strConferenceNo + "');",true);原型如下 ClientScript.RegisterStartupScript(Type type, string key, string script,bool addScriptTags);区别是bool addScriptTags为tru

Spring mvc中@RequestMapping 6个基本用法小结

小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @RequestMapping(value="/departments") public String simplePattern(){ System.out.println("simplePattern method was called"); return "someResult"; } 则访问http://localho