连接到nil应该在Ruby中返回nil
我需要生成一个由括号包围的字符串,但前提是它的值不是空的。目前我正在使用类似于:连接到nil应该在Ruby中返回nil,ruby,string,string-concatenation,Ruby,String,String Concatenation,我需要生成一个由括号包围的字符串,但前提是它的值不是空的。目前我正在使用类似于: [5] pry(main)> a = nil => nil [6] pry(main)> a.nil? ? '' : "(#{a})" => "" [7] pry(main)> a = "world" => "world" [8] pry(main)> a.nil? ? '' : "(
[5] pry(main)> a = nil
=> nil
[6] pry(main)> a.nil? ? '' : "(#{a})"
=> ""
[7] pry(main)> a = "world"
=> "world"
[8] pry(main)> a.nil? ? '' : "(#{a})"
=> "(world)"
但是我认为它是重复的。有更简单的方法吗?您只需编写一个方法即可:
def bracketize(str)
return '' unless (str)
"(#{str})"
end
因为这清楚地表明了你在做什么,你不必在代码上到处盖章。只需将代码放在一个方法中:
def parentheses(a=nil)
a.nil? ? '' : "(#{a})"
end
仅供参考。
a.nil?
对于空字符串返回false,您可能需要一个.blank?@Mark。blank?
是一个ActiveSupport方法,它没有标记为rails问题。@max Good point。blank?
不是核心Ruby,但它的实现很有指导意义:响应(:empty?)!!空的?:!self
吹毛求疵:是否将括号括起来更合适(但更难拼写)?@muistooshort添加\u round\u grabby\u things\u round\u一些\u文本
也许更长更具描述性的东西会更好;)这没关系,但是没有回答我的“有没有更简单的方法”的问题,因为仅仅为相同的逻辑创建一个方法并不是我要问的。不过,给了你有用的一票。我试图找到一种不同的方法(我唯一想到的是Visual Basic中的+vs&函数,它将空值或空值传播到连接中。更简单的方法是编写一个方法。更简单的方法是使此方法更易于访问,例如在NilClass
和String
上定义它,这样您就可以执行s.bracketize
或其他操作Ruby是灵活的,允许用任何你认为合适的方法修改核心类。