2015-05-29 30 views
0

我刚刚安装了Ruby ...我通常更多的是C#人;但我想为网页设计学习它。它正在工作;然后突然(没有改变之后)它停止工作 - 而是提供错误。Ruby:未终止的正则表达式符合文件末尾

以下是我的(Windows)CMD行的错误报告。下面是我试图运行的代码(它可能有语法错误,我对Ruby还是很新的)。

Microsoft Windows [Version 6.3.9600] 
(c) 2013 Microsoft Corporation. All rights reserved. 

C:\Users\Alex>cd C:/Users/Alex/Desktop 

C:\Users\Alex\Desktop>ruby r.rb 
r.rb:1: unterminated regexp meets end of file 

C:\Users\Alex\Desktop> 

代码我试图运行:

numX = 0 // where it begins 

for numX in 0..1000 do 
    if numX % 3 == 0 || numX % 5 == 0 
     puts "Number: #numX" 
    end 
end 
+3

'''''在ruby中'''afaik不是“评论的开始”,#'是。 –

+0

这样做!来自C#的讨厌习惯!哈哈。谢谢。 – user3400029

回答

3

它看起来像你与那些从C#混合了红宝石评论!在Ruby中的注释通过哈希标记分隔:#

正斜线用来分隔Ruby的正则表达式,这就是为什么你从分析器收到这个错误:

/hello/.match('hello') # => #<MatchData "hello"> 
/hell/.match('hello') # => #<MatchData "hell"> 
//.match('hello') # => #<MatchData ""> 
// == Regexp.new('') # => true 

解析器认为,正则表达式是“未终止的”,因为它将第一个/解释为除法运算符(因为它在数字文字后面)并且第二个/作为正则表达式的开头。如果你在文件末尾添加/,你会注意到Ruby会试图用正则表达式分割0,并且你会合理地得到以下错误:TypeError: Regexp can't be coerced into Fixnum

+0

是的,Ruby读取'//'为正则表达式,但为什么“未终止”? –

+0

解释者认为第一个'/'标记除了数字之后就表示分割。 – fny

+0

这非常合理。谢谢。 –

相关问题