Ruby .join方法返回原始数组的长度而不是连接字符串

时间:2014-10-18 20:53:34

标签: ruby rspec tdd

我想重复一个单词可选的次数。但是,当我运行我的程序时,它似乎没有超过input[1].times do line

CODE:

def repeat(*input)
    sentence = []
    if input.length == 1
        "#{input[0]} #{input[0]}"
    else
        input[1].times do
            sentence.push(input[0])
            sentence.join(" ")
        end
    end
end

puts repeat("Hey!")

puts repeat("Hey", 3)

输出:

Hey! Hey!
3

2 个答案:

答案 0 :(得分:0)

你需要返回句子,并且想要在时间循环之外加入句子。

def repeat(*input)
    sentence = []
    if input.length == 1
        "#{input[0]} #{input[0]}"
    else
        input[1].times do
            sentence.push(input[0])
        end
        sentence = sentence.join(" ")
        return sentence
    end
end

答案 1 :(得分:0)

这是一种更为紧凑的方式:

def say_hey(word, repeat=1)
  puts ([word]*repeat).join(' ')
end

say_hey("Hey!")
  #=> Hey!
say_hey("Hey!", 14)
  #=> Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey! Hey!