【问题标题】:to_s method returning an unwanted "\"to_s 方法返回不需要的“\”
【发布时间】:2015-07-01 09:12:20
【问题描述】:

我写了一个方法,它接受一个数字数组,将数字 2 添加到其中,然后返回一个字符串数组。

def add_two(array)
  new_array = array.map{|x| "#{x} + 2 =  #{x + 2}"}
  new_array.to_s
end

以下是测试结果:

我有一个不需要的\ 在我的回报。我试图弄清楚\ 的来源。有人能指出我正确的方向吗?

【问题讨论】:

    标签: arrays ruby inspect


    【解决方案1】:

    它来自您最后拥有的to_s。您正在将字符串数组(可能已经是您想要的)转换为包含双引号的单个字符串(必须由\ 转义)。要修复它,只需删除带有to_s 的行。

    【讨论】:

      【解决方案2】:

      它没有添加额外的\s。 \ 是转义字符,用于转义 ",它是结果字符串的一部分。这里:

      a = add_two(array)
      # => "[\"1 + 2 =  3\", \"2 + 2 =  4\", \"3 + 2 =  5\"]"
      
      puts a
      # ["1 + 2 =  3", "2 + 2 =  4", "3 + 2 =  5"]
      

      或直接:

      puts add_two(array)
      # ["1 + 2 =  3", "2 + 2 =  4", "3 + 2 =  5"]
      

      【讨论】:

      • 谢谢。但是当我“放入 add_two(array)”时,我的回报只是零
      • 是的。因为puts 打印输出并返回nil。我这样做只是为了向你解释发生了什么。简而言之,您不必担心结果中的 \ 。您的实际代码工作正常,\ 甚至不存在。
      • 我的输出中没有看到反斜杠,我完全尝试了你写的内容,它给了我你正在搜索的内容。
      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多