ruby内置函数在.rb文件中不起作用
我不确定为什么我的ruby代码不起作用,任何建议或帮助都将不胜感激 是否有人可以建议我如何使此代码工作:ruby内置函数在.rb文件中不起作用,ruby,Ruby,我不确定为什么我的ruby代码不起作用,任何建议或帮助都将不胜感激 是否有人可以建议我如何使此代码工作: result = fetch_value.join(',').split(',').map(&:to_i) 我有下面的文件,名为codeit.rb # Function definitions first def menu # Clear the screen, and present the user with a menu puts `clear` puts "**
result = fetch_value.join(',').split(',').map(&:to_i)
我有下面的文件,名为codeit.rb
# Function definitions first
def menu
# Clear the screen, and present the user with a menu
puts `clear`
puts "***Flatten an Array***"
puts "would you like to flatten an array?"
print "(y)yes, (n)no, (q)quit: "
gets.chomp.downcase
end
def flatten_array
print "great! lets do this! "
result = fetch_value.join(',').split(',').map(&:to_i)
puts "the answer is #{result}"
puts "press return to return to menu"
gets
end #end of flatten_array method
def fetch_value
puts "Please enter an array: "
gets.chomp
end
# run the app...
response = menu
while response != 'q'
case response
when 'y'
flatten_array
when 'n'
advanced_calc
end
response = menu
end
在终端中运行此代码,我得到以下结果:
***Flatten an Array***
would you like to flatten an array?
(y)yes, (n)no, (q)quit: y
great! lets do this! Please enter an array:
[[1, 2, [3]], 4]
codeit.rb:14:in `flatten_array': undefined method `join' for "[[1, 2, [3]], 4]":String (NoMethodError)
from codeit.rb:35:in `<main>'
fetch_value方法返回字符串,而不是数组。正如错误所说,String类没有join方法
如果您想将字符串作为数组处理(本质上是将其作为ruby代码进行计算),那么可以始终使用eval。请注意,在任何实际代码中,对用户输入的字符串使用eval都是相当危险的,因为您的代码将愉快地运行用户提供的任何内容
有了这个警告,您可以这样做:
def fetch_value
puts "Please enter an array: "
eval(gets.chomp)
end
你可能还需要考虑如何处理数组。目前,您正在将其元素组合成一个字符串,然后将该字符串拆分回一个数组,这没有多大意义。而且,由于您的示例也使用嵌套数组,所以join和split tango可能并没有达到您所认为的效果。
如果必须,请不要执行“清除”之类的操作,而是调用系统“清除”。如果要创建交互式界面,请使用.join获取数组并将其转换为字符串。这里你已经有一个字符串了。您需要重新评估您的策略。join.split与.split.join不同…ruby代码不工作不清楚。您希望您的代码做什么?会发生什么?是否有错误消息?上面说什么?def fetch_value
puts "Please enter an array: "
eval(gets.chomp)
end