Ruby 简短示例中的问题调用方法

Ruby 简短示例中的问题调用方法,ruby,Ruby,在下面的示例中,我应该如何正确调用此方法 这里是exmaple,我尝试调用randomMethod(),但抛出一个错误,表示它未定义 def randomMethod() rand1 = rand(2) if rand1 == 1 rand2 = rand(1..25) puts rand2 puts "" else rand2 = 0 puts rand2 puts "" end end x = 99 while x &g

在下面的示例中,我应该如何正确调用此方法

这里是exmaple,我尝试调用randomMethod(),但抛出一个错误,表示它未定义

def randomMethod()

  rand1 = rand(2)
  if rand1 == 1

    rand2 = rand(1..25)
    puts rand2
    puts ""

  else
    rand2 = 0
    puts rand2
    puts ""
  end
end

x = 99
while x > 0
  randomMethod()
  x - rand2 
end

您没有从
randomMethod
方法返回rand2值,也没有收到。我修改了你的程序,现在检查一下

def randomMethod()

  rand1 = rand(2)
  if rand1 == 1

    rand2 = rand(1..25)
    puts rand2
    puts ""

  else
    rand2 = 0
    puts rand2
    puts ""
  end
  rand2
end

x = 99
while x > 0
  rand2=randomMethod()
  x - rand2
  x-=1
end

无法从方法本身外部访问本地方法变量:

def my_method
  @val1 = 1
  val2 = 2
end

my_method #=> 2 returns the value of the last line of the method
@val1 #=> 1 (or you get nil unless you call my_method before)
val2 #=> undefined local variable or method `val2`
查看此帖子
您可以这样重写您的方法:

def random_method
  return rand(1..25) if rand(2) == 1
  0 # return value unless the condition above
end
注意,它不能保证50%的时间返回1到25之间的数字,但概率是50%

然后用于迭代,您需要递减
x

x = 99
loop do
  puts "x = #{x}"
  x -= random_method # decrement x by the value returned by random_method
  break if x <= 0
end
x=99
环道
放置“x=#{x}”
x-=随机_方法#按随机_方法返回的值递减x

如果x修复了我得到的错误,则中断。现在我想解决的是无限循环,如果有人有建议的话。@Amadan实际上我用他的程序修改了有问题的区域。现在我已经更新了。@gingeriti更新为
x-=1
。你现在可以检查了。我很高兴它现在能正常工作了。然而,这个程序的目标是减去第6行中生成的数字,然后从x中减去它。因此,当x达到0时,控制台中会显示随机数。例如,生成25 4次将结束程序,因为100>99
#use this kind of convention about name of function
def random_method()
    #always initialize your varialble first before implement to avoid errors
    rand1 = rand(2)
    rand2 = 0

    if rand1 == 1
      rand2 = rand(1..25)
    end

    #don't repeat yourself
    puts rand2
    puts ""

    #pick a return just to make sure you do not mistaken
    return rand2
end


x = 99
while x > 0
    rand2=random_method()
    x - rand2
    x = x - 1
end