你喜欢哪种类型的Ruby字符串引用?
你喜欢哪种类型的Ruby字符串引用?到目前为止,我一直使用你喜欢哪种类型的Ruby字符串引用?,ruby,string,Ruby,String,你喜欢哪种类型的Ruby字符串引用?到目前为止,我一直使用“单引号”,除非字符串包含某些转义序列或插值,在这种情况下,我显然必须使用“双引号” 但是,真的有什么理由不到处使用双引号字符串吗?除非我特别需要禁用转义/插值,否则我通常使用双引号。除非我需要插值,否则我总是使用单引号 为什么??看起来好多了。当屏幕上有很多东西时,大量的单引号比大量的双引号给你带来的“视觉混乱”要少 我想指出的是,这并不是我故意决定要做的事情,只是我在试图实现更漂亮的代码时随着时间的推移而“进化”的事情 如果需要行内引
“单引号”
,除非字符串包含某些转义序列或插值,在这种情况下,我显然必须使用“双引号”
但是,真的有什么理由不到处使用双引号字符串吗?除非我特别需要禁用转义/插值,否则我通常使用双引号。除非我需要插值,否则我总是使用单引号 为什么??看起来好多了。当屏幕上有很多东西时,大量的单引号比大量的双引号给你带来的“视觉混乱”要少 我想指出的是,这并不是我故意决定要做的事情,只是我在试图实现更漂亮的代码时随着时间的推移而“进化”的事情
如果需要行内引号,我偶尔会使用%q或%q。我只使用过一次或两次heredocs。如果必须避开它们,请不要使用双引号。不要陷入“单引号对双引号”的陷阱。Ruby非常支持字符串文本的任意分隔符: 现场镜子- 原址-
除非需要插值或字符串包含单引号,否则我使用单引号
然而,我刚刚从Dejan的答案中学到了任意分隔符的技巧,我认为这很棒。=) 我以前使用单引号,直到我知道我需要插值。然后我发现,当我回到过去,不得不将一些单引号改为双引号时,我浪费了很多时间。性能测试表明,使用双引号对速度没有明显影响,所以我主张始终使用双引号 唯一的例外是在替换字符串中使用sub/gsub和反向引用时。那么你应该使用单引号,因为它更简单
mystring.gsub( /(fo+)bar/, '\1baz' )
mystring.gsub( /(fo+)bar/, "\\1baz" )
除非需要插值,否则我使用单引号。当您需要插值时,稍后更改也会很麻烦:当您发现字符串中有一个#或一个\导致了您不想进行的转义时,您必须从double更改为single 默认为单引号的优点是,在采用此约定的代码库中,引号类型充当是否需要插值表达式的视觉提示。当编辑器或IDE以不同方式突出显示这两种字符串类型时,这种情况更为明显
我对多行字符串使用%{…}语法。像许多程序员一样,我尽量做到具体可行。这意味着我试图通过使代码尽可能简单,使编译器尽可能少地工作。所以对于字符串,我使用最简单的方法来满足我对该字符串的需求
<<END
For strings containing multiple newlines,
particularly when the string is going to
be output to the screen (and thus formatting
matters), I use heredocs.
END
%q[Because I strongly dislike backslash quoting when unnecessary, I use %Q or %q
for strings containing ' or " characters (usually with square braces, because they
happen to be the easiest to type and least likely to appear in the text inside).]
"For strings needing interpretation, I use %s."%['double quotes']
'For the most common case, needing none of the above, I use single quotes.'
我看到了这两个方面的参数:
对于使用双引号的情况:
- 倡导者总是使用双引号:
- 如果您与引用一致,那么通过搜索“foobar”来搜索字符串foobar会更容易。然而,我不是。所以我搜索[''''']foobar['''']打开regexps
对于使用单双引号的某些组合:
- 知道是否需要查找字符串插值
- 可能会稍微快一点(尽管如此之小,不足以影响github样式指南)李>
单引号保留其中的字符。但双引号会对它们进行计算和分析。请参见以下示例:
"Welcome #{@user.name} to App!"
结果:
欢迎Bhojendra加入应用程序
但是,
结果:
欢迎#{@user.name}加入应用程序
'Welcome #{@user.name} to App!'