【问题标题】:While loop not exiting after condition met (Ruby)满足条件后循环未退出(Ruby)
【发布时间】:2013-03-05 07:56:54
【问题描述】:

无论如何,我都不是一个熟练的程序员,但每个人都必须从某个地方开始。 我一直在尝试用 ruby​​ 制作一个(非常)基本的迷宫类型,但我在 while 循环不退出时遇到了困难。

房间布局是颠倒的:

5 2 103 4

从中心向北两次应该将@loc 更改为 5,说“结束”,然后退出循环:

elsif @loc == 2
@loc = 5
puts "End"

但它会返回到 while 循环的开头,使玩家陷入困境。

编辑:代码有一些混淆,所以我删除了块并指向你 http://pastebin.com/EFWVBAhn

【问题讨论】:

  • 我们需要查看更多您的代码。你的课是什么?很可能在您的cmd.go_north 中,您访问的是cmd@loc 字段,而不是您的迷宫类。但在我们看到代码之前我们无法判断。
  • @loc 的值没有改变时,您如何期望while 语句退出?尝试在语句开头使用puts 或其他内容检查该变量的值。
  • 请缩进,尤其是在排查循环问题时!它永远不会退出,因为@loc 永远不是5。但是你还没有贴出@loc变化的代码,所以很难说是什么问题。
  • 我在工作副本中添加了调试代码,可以确认@loc 正在发生变化。

标签: ruby


【解决方案1】:

线

while @loc != 5

正在访问未更改的变量。 cmd.loc 发生了变化,这不是同一个变量。该行需要

while cmd.loc != 5

为了访问变量。

你还需要引用你的字符串(例如if command == west应该是if command == "west");否则,您是在告诉 Ruby 与不存在的名为 west 的变量进行比较,而不是字符串“west”。

【讨论】:

  • 我确实在字符串上犯了这个错误,但它已被纠正。我只是忘了重新复制它。
  • puts @loc 为预期的空间返回 5,所以这不应该是问题。
  • puts @loc 行在哪里?
猜你喜欢
  • 2023-01-12
  • 2021-11-18
  • 2021-08-22
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 2013-08-15
  • 2022-01-13
相关资源
最近更新 更多