【问题标题】:Code Beautification: Concatenating Multiple Vars and Strings in Ruby代码美化:在 Ruby 中连接多个变量和字符串
【发布时间】:2012-03-28 02:32:40
【问题描述】:
self.homePostalAddress = self.mozillaHomeStreet + "$" + self.mozillaHomeLocalityName + "$" + self.mozillaHomePostalCode + "$$" + self.mozillaHomeCountryName

我有这行代码,我想把它分成多行,因为它变得太长了。

我尝试了 #{} 的其他变体,但未能达到预期的结果。

【问题讨论】:

    标签: ruby string concatenation code-formatting


    【解决方案1】:

    已编辑

    在 Martin 更正之后,'$$' 不是错字。

    使用数组的#join方法。

    homePostalAddress = [
      '$', mozillaHomeStreet, 
      '$', mozillaHomeLocalityName, 
      '$', mozillaHomePostalCode,
      '$$', mozillaHomeCountryName
    ].join
    

    【讨论】:

    • 但是OP在mozillaHomeCountryName之前有两个$$,在你的例子中只有一个
    • 我认为这是一个错字。在任何情况下,将 $ 符号添加到单个变量都不会影响可读性。
    • 这不是错字。它是必需的,因为它写在问题中
    • 假设这是一个错字,您可以简单地删除美元并使用array_of_elements.join("$")。如果实际需要双美元,您的解决方案很好,但您也可以添加一个空元素并仍然使用join("$")。但这可能不是真的更具可读性......
    • 你看,这毕竟不是错字:)
    【解决方案2】:

    您可以尝试使用String#% 格式化方法:

    homePostalAddress = "%s$%s$%s$$%s" % [mozillaHomeStreet, mozillaHomeLocalityName,
                                         mozillaHomePostalCode, mozillaHomeCountryName] 
    

    (您不需要使用self.,因为这些方法将在 self 上隐式调用)。

    使用字符串插值 (#{}),此代码将如下所示:

     homePostalAddress = "#{mozillaHomeStreet}$#{mozillaHomeLocalityName}$" + 
                         "#{mozillaHomePostalCode}$$#{mozillaHomeCountryName}"
    

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 2014-07-28
      • 2018-12-17
      • 2016-11-15
      • 2018-06-23
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多