ruby - 比较函数内的数组
问题描述
这里调用的两个相同的函数每次都会输出一串长度不同的数字。我的问题是如何比较它们的长度然后用它做些什么?
例如:如果 random_method(2) 长度 < random_method(3) 长度 --> 这样做
def random_method()
rand1 = rand(2)
if rand1 == 1
rand2 = rand(1..25)
else
rand2 = 0
end
rand2
end
def random_method2()
x_vals = [99]
x_vals << x_vals.last - random_method while x_vals.last > 0
puts ": #{x_vals.join(", ")}"
end
def random_method3()
x_vals = [99]
x_vals << x_vals.last - random_method while x_vals.last > 0
puts ": #{x_vals.join(", ")}"
end
random_method2()
random_method3()
解决方案
目前,您仅将数组存储在方法内的局部变量中,但不返回生成的数组(您只打印数组的字符串表示形式)。要比较数组并对其进行处理,您需要返回数组并将它们存储在变量中。
像这样的东西可能有效:
def random_number
if rand(2) == 1
rand(1..25)
else
0
end
end
def random_array
array = [99]
array << (array.last - random_number) while array.last > 0
puts array.inspect
array
end
array_1 = random_array
array_2 = random_array
if array_1.length < array_2.length
puts "Array 1 is shorter"
else
puts "Array 1 is longer or equal in size to Array 2"
end
请注意,我稍微重构了您的方法以删除重复并遵循常见的 Ruby 习惯用法。
推荐阅读
- php - 我面临这个错误 - 消息:语法错误,意外的“返回”(T_RETURN),期待标识符(T_STRING),我错过了什么?我在下面提到的代码
- c++ - 无法打开文件“winsock2.lib”C++
- etl - Pentaho Dimension Lookup/Update 死锁错误
- php - 在 PHP 中的字符串中生成反斜杠
- python - 使用循环创建 seaborn displot
- ruby - Object Ruby 中的模块方法
- google-cloud-build - 未找到在 Cloud Build 'cd' 中更改目录
- bash - 将 csv 文件中的每一列分配给数组
- flutter - 如何停止颤动刷卡器中的循环?
- python - 获取数据框中存在的给定行的索引