我创建了一个带有可选参数的简单repeat(string, number)
函数,可以多次重复一个字符串。我已经很好地看了一下论坛,并试着很好地使用它们 - 所以请原谅我,如果之前已经回答过的话。当我使用多次重复调用函数时,*arg
创建一个整数数组,我似乎无法将其转换为.map(&:to.i)或简单地array.to_i的整数。这里有任何帮助:)
此代码在尝试评估number < 3
def echo(string)
string
end
def shout(string)
echo(string).upcase
end
def repeat(string, *number)
number = number.map { |i| i.to_i }
outputStr = ''
if number < 3
echo(string) + " " + echo(string)
#puts number.inspect.length
else
#count = number
while number > 0
number -= 1
outputStr += echo(string) + " "
end
outputStr[0, outputStr.length - 1]
#
# number.times do {|i| outputStr += echo(string) + " " + echo(string)}
# end
# outputStr
end
end
repeat('hi', 3)
答案 0 :(得分:1)
此代码在尝试评估
时失败number < 3
运行代码时收到以下错误
echo_repeat.rb:13:in `repeat': undefined method `<' for [3]:Array (NoMethodError)
Did you mean? <<
from echo_repeat.rb:31:in `<main>'
您正在尝试询问数组是否小于3并且Ruby不知道要处理它。如果any?
,all?
或https://github.com/harsh62/Melbournce-Zoo/blob/master/README.md小于3,您可以尝试评估数组; e.g。
number.one? { |n| n < 3 }
number.any? { |n| n < 3 }
number.all? { |n| n < 3 }
但是,你提到了
我创建一个带有可选参数的简单重复(字符串,数字)函数,以多次重复一个字符串。
您的repeat
函数接受一个参数数组作为number
参数。
def repeat(string, *number)
这是故意的吗,因为为了声明一个可选参数,你应该在没有给出时设置参数; e.g。
def repeat(string, number = 1)
当没有给出number
时,这只会重复一次字符串; e.g。
repeat('hi')
# => "hi"
repeat('hi', 3)
# => "hi hi hi"