【问题标题】:New to Ruby - While loop issues in IRBRuby 新手 - IRB 中的 While 循环问题
【发布时间】:2011-04-15 16:39:03
【问题描述】:

所以几天前我决定尝试学习 Ruby,它实际上进展顺利。我一直在 IRB 中摆弄,直到找到一个重要的程序来编写代码来测试我的知识。

但是,今天我在 While 循环中遇到了一个意想不到的问题,我希望你们能帮助我解决这个问题:

irb(main):001:0> i = 0
=> 0
irb(main):002:0> while (i < 1000)
irb(main):003:1> i++
irb(main):004:1* end
SyntaxError: (irb):4: syntax error, unexpected keyword_end
        from C:/WINDOWS/Ruby/bin/irb:12:in `<main>'

为什么这没有像我预期的那样工作?根据this site,我的结构是正确的,那么我在这里缺少什么?

如果有帮助的话,我正在 Windows XP 下运行 Ruby 1.9.2。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    i++ 不是有效的红宝石。你需要做i += 1

    编辑: 请参阅 Mladen 关于解析器所见内容的评论。

    【讨论】:

    • 有效的Ruby,这正是为什么错误消息如此混乱。
    • @Jörg:不知道你是什么意思:end 确实在意料之中,他有+ 代替。还是不行?
    • 不,它不是有效的 Ruby。 + 在这种情况下是二元运算符,没有第二个操作数。鉴于上述情况,错误消息并不令人困惑。考虑:while true; i + end
    • @Andrew: i+++++1 似乎被解析为i+(+(+(+(+1))))+ 是有效的一元运算符,如-
    • 考虑一下,++i 有效的 Ruby。尽管它并没有达到 Ruby 移民的预期。 ;)
    【解决方案2】:

    除非您的目的是专门了解 while 循环和整数加法/比较的工作原理,否则您真正想要的是

    1000.times do |i|
    end
    

    【讨论】:

      【解决方案3】:

      Ruby 没有 C 风格的递增 (++) 或递减 (--) 运算符。你想要这个:

      i = 0
      while(i < 1000)
        i = i + 1 # Or i += 1
      end
      

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        相关资源
        最近更新 更多