【问题标题】:Join elements of an array连接数组的元素
【发布时间】:2015-05-30 12:34:46
【问题描述】:

为什么我的代码没有打印连接的数组?使用此代码,数组正在打印修改后的元素但未加入...

def translate(string)
    vowels=['a','e','o','u','i']
    string=string.split
    string.map! do
        |x| if vowels.include? x[0]
            x.insert(-1,'ay')
            else 
            x=x.slice(1, x.length)
            x=x.insert(-1, x[0]+'ay')
        end
    end
    string.join('-')
    print(string)
end

【问题讨论】:

    标签: arrays ruby string


    【解决方案1】:

    Array#join 方法不会将自己设置为连接字符串,而是返回一个连接字符串。您可以像这样将连接的结果保存到string 本身:

    # ...
    string = string.join('-')
    print string
    

    当然,使用另一个变量可以更具可读性:

    # ...
    joined_string = string.join('-')
    print joined_string
    

    【讨论】:

    • 该方法不返回它打印的字符串,因此没有理由将string.join('-') 分配给变量。 print string.join('-') 就足够了(尽管p 可能比print 更合适)。
    • @CarySwoveland 感谢您的评论。变量string 在这里实际上是一个Array。我已经修正了我的答案。
    【解决方案2】:

    您没有打印从 join 返回的值。

    joined = string.join('-')
    print(joined)
    

    【讨论】:

      【解决方案3】:

      这是因为您没有将join 返回的值存储在任何地方。 string 本身仍然是一个数组。试试这个:

      print string.join('-')
      

      因此您的方法应该如下所示:

       def translate(string)
          vowels=['a','e','o','u','i']
          string=string.split
          string.map! do
              |x| if vowels.include? x[0]
                  x.insert(-1,'ay')
                  else 
                  x=x.slice(1, x.length)
                  x=x.insert(-1, x[0]+'ay')
              end
          end
          print string.join('-')
       end
      

      【讨论】:

        猜你喜欢
        • 2011-11-03
        • 1970-01-01
        • 2016-07-13
        • 1970-01-01
        • 2014-08-27
        • 2015-06-12
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多