`

转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法

    博客分类:
  • RUBY
 
阅读更多
[Ruby]转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法

单引号内的内容,ruby会原样输出

双引号内的内容,ruby会解析

我们看个简单的例子,针对字符串      #{foo}test     我们分别用单引号核双引号操作

'#{foo}test'

=> "\#{foo}test"
  

"#{foo}test"

NameError: undefined local variable or method `foo' for main:Object
        from (irb):4
        from C:/Ruby192/bin/irb:12:in `<main>'
显而易见, 双引号对字符串内的#进行了解析, 导致ruby认为foo是个方法,出错.

类似的, %W %Q 相当于双引号,   %w %q 相当于单引号.



转载: http://simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/ 
%Q
This is an alternative for double-quoted strings, when you have more quote characters in a string.Instead of putting backslashes in front of them, you can easily write:
>> %Q(Joe said: "Frank said: "#{what_frank_said}"")
=> "Joe said: "Frank said: "Hello!"""

The parenthesis “(…)” can be replaced with any other non-alphanumeric characters and non-printing characters (pairs), so the following commands are equivalent:
>> %Q!Joe said: "Frank said: "#{what_frank_said}""!
>> %Q[Joe said: "Frank said: "#{what_frank_said}""]
>> %Q+Joe said: "Frank said: "#{what_frank_said}""+

You can use also:
>> %/Joe said: "Frank said: "#{what_frank_said}""/
=> "Joe said: "Frank said: "Hello!"""



%q
Used for single-quoted strings.The syntax is similar to %Q, but single-quoted strings are not subject to expression substitution or escape sequences.
>> %q(Joe said: 'Frank said: '#{what_frank_said} ' ')
=> "Joe said: 'Frank said: '\#{what_frank_said} ' '"



%W
Used for double-quoted array elements.The syntax is similar to %Q
>> %W(#{foo} Bar Bar\ with\ space)
=> ["Foo", "Bar", "Bar with space"]



%w
Used for single-quoted array elements.The syntax is similar to %Q, but single-quoted elements are not subject to expression substitution or escape sequences.
>> %w(#{foo} Bar Bar\ with\ space)
=> ["\#{foo}", "Bar", "Bar with space"]



%x
Uses the ` method and returns the standard output of running the command in a subshell.The syntax is similar to %Q.
>> %x(echo foo:#{foo})
=> "foo:Foo\n"



%r
Used for regular expressions.The syntax is similar to %Q.
>> %r(/home/#{foo})
=> "/\\/home\\/Foo/"



%s
Used for symbols.It’s not subject to expression substitution or escape sequences.
>> %s(foo)
=> :foo
>> %s(foo bar)
=> :"foo bar"
>> %s(#{foo} bar)
=> :"\#{foo} bar"
分享到:
评论

相关推荐

    Ruby经典系列: exceptional ruby

    Ruby经典系列: exceptional ruby 教你在ruby代码中如何处理异常

    前端学 Ruby:熟悉 Ruby 语法.pdf

    前端学 Ruby:熟悉 Ruby 语法

    Ruby的教程.txt

    类与对象:理解Ruby中的类和对象的概念,学习如何定义类、创建对象以及使用对象的属性和方法。 继承与多态:掌握Ruby中的继承机制,了解子类如何继承父类的属性和方法,并实现自己的特定功能。同时,学习多态的...

    Ruby-rubybuild编译和安装Ruby

    ruby-build - 编译和安装Ruby

    active_action:在Ruby中构建和使用服务对象的简单方法

    在Ruby中构建和使用服务对象的简单方法。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby-active_action' , '~&gt; 3.0.1' 或使用其他宝石: 然后执行: $ bundle install ActiveAction示例 # app/actions/...

    p6df-ruby:Ruby

    p6df-Ruby目录p6df-Ruby徽章概括贡献行为守则变化用法p6df-ruby:p6df-ruby / init.zsh: p6_ruby_prompt_info() p6df :: modules :: ruby​​ :: deps() p6df :: modules :: ruby​​ :: home :: symlink() ...

    ruby笔记1ruby笔记1ruby笔记1

    ruby笔记1ruby笔记1ruby笔记1ruby笔记1ruby笔记1ruby笔记1

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...

    RubyLearning:关于Ruby语言的实践

    RubyLearning:关于Ruby语言的实践

    rubyzip:官方Rubyzip存储库

    如果任何需要旧版rubyzip的第三方gem出现问题,则可以使用以下解决方法: gem 'rubyzip' , '&gt;= 1.0.0' # will load new rubyzip version gem 'zip-zip' # will load compatibility for old rubyzip API. 要求 Ruby...

    s2s:用于Ruby片段应用程序的p2p

    S2S:步步为营 Peer 2对等目录共享,用于Ruby(Shoes)片段 介绍 一个简单的p2p应用程序,用于分发少量(免费)Ruby应用程序。 GUI由Green-Shoes制成 P2p部分基于_why显示的旧9行LOC。 所以这个工具是他的纪念品。 ...

    ruby-enum:在Ruby中定义枚举的便捷方法

    目录散列检索键和值将键映射到值将值映射到键重复的枚举键或重复的值遗产贡献版权和许可相关项目 用法枚举可以定义为常量或类方法来访问,这是优先考虑的问题。 常数定义枚举,并将其作为常量引用。 class ...

    Ruby语言教程:Ruby 变量示例

    Ruby语言教程:Ruby 变量示例

    ruby-launchd:使用Ruby控制Mac OS X服务

    Ruby-Launchd-使用Ruby控制Mac OS X服务Ruby-Launchd就像launchctl(或著名的午餐)一样。 它使您可以使用Ruby在Mac OS X上轻松创建,启动和停止服务。安装将此行添加到您的应用程序的Gemfile中: gem 'launchd' ...

    Ruby.Programming_向Ruby之父学程序设计(第2版)

    从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要使用方法、简单的应用等,尽可能都浅显地加以解说。您若是自己动手玩过HTML这样的读者,应该就能充分活用《Ruby Programming:向Ruby之父学...

    rubyrailsapi:关于Ruby on Rails的示例API

    Ruby on Rails的示例API开发 该项目演示了Ruby on Rails上的示例API开发。

    grape-active_action:在Ruby中构建和使用服务对象的简单方法

    一种构建和使用服务对象的简单方法。 访问父宝石。 安装 将此行添加到您的应用程序的Gemfile中: gem 'grape-active_action' , '~&gt; 3.0.6 ' 或使用原始的宝石: gem 'ruby-active_action' , '~&gt; 3.0.6 ' 或使用...

    Sass环境-Ruby2.6.5.zip

    如果您使用的是 Windows 9x,那么请在您的 c:\autoexec.bat 中添加:set PATH="D:\(ruby 安装目录)\bin;%PATH%" Windows NT/2000 用户需要修改注册表。 点击控制面板|系统性能|环境变量。 在系统变量下,选择...

    rinruby:在Ruby中集成了R解释器的Ruby库,使得R的统计例程和图形在Ruby中可用

    林鲁比描述RinRuby是一个Ruby库,它将R解释器集成到Ruby中,从而使R的统计例程和图形在Ruby中可用。 该库包含一个简单的Ruby脚本,该脚本易于安装,并且不需要任何特殊的R编译或安装。由于该库是100%纯Ruby,因此可...

    Programming Ruby 第二版 英文PDF(非扫描版)

    Programming Ruby 第二版(Second Edition)英文版于2005年出版,之后有了中文版。但可惜的是网上流传的中文版PDF基本上都是扫描版的,文字内容得自己打出来,看到好的代码也得自己动手,无法Ctrl-C + Ctrl-V,还...

Global site tag (gtag.js) - Google Analytics