此问题在此处已有答案:
What is a role of plus in front of a string in ruby?(1个答案)
昨天就关门了。
我刚刚在Ruby on Rails GitHub资源库的pull request中找到了这段代码(简化版):
def foo(string)
return +"" if string.empty?
# ...
end
字符串
我想知道+""
是什么意思?
前缀+
与返回的空字符串""
有什么区别?返回+""
而不是""
或string
字符串(在本例中,此时该字符串为空)有什么好处?
1条答案
按热度按时间yizd12fk1#
+''
确保返回的字符串不被冻结,无论文件中的字符串是否被隐式冻结,例如,通过# frozen_string_literal: true
魔术注解。引用关于
String#+@
的文档:+string
→new_string
或self
如果
self
未冻结,则返回self
。否则返回
self.dup
,它没有被冻结。示例如下:
字符串
但是对于隐式冻结的字符串:
型
同样,作者决定不简单地返回空的
string
字符串,因为它可能会被冻结。返回+''
可以确保无论环境或输入如何,都返回一个未冻结的空字符串。