首页 > 解决方案 > 比较函数内的数组

问题描述

这里调用的两个相同的函数每次都会输出一串长度不同的数字。我的问题是如何比较它们的长度然后用它做些什么?

例如:如果 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()

标签: ruby

解决方案


目前,您仅将数组存储在方法内的局部变量中,但不返回生成的数组(您只打印数组的字符串表示形式)。要比较数组并对其进行处理,您需要返回数组并将它们存储在变量中。

像这样的东西可能有效:

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 习惯用法。


推荐阅读