2012-01-28 117 views
2

有人能告诉我为什么在这个世界上这不起作用吗?下面的代码是文件prog.rb简单的Ruby代码没有运行

class String 
    def to_b 
     return true if self == "true" 
     false 
    end 
end 

这里的整个内容是错误:

path/prog.rb:1: syntax error, unexpected keyword_def, expecting 
<' or ';' or '\n' 
      return true if self =... 
       ^

有文件中没有坏人的角色,我使用Ruby 1.9.3。代码在IRB中进行测试,发现可以工作。

这是一个错误?

感谢

+4

顺便说一句,你可以写这个方法只是'def to_b; self ==“true”; end'。 – 2012-01-28 20:29:51

+1

工程就好了;怀疑你的编码或时髦的字符。你用什么来编辑它? – 2012-01-28 20:34:52

回答

5

我的猜测是,有一个与你的编辑器如何节约回车的问题。这是说它预计<;\n - 这意味着它没有检测到应该在class String行末尾出现的\n(回车)。

检查编辑器的回车设置并重新保存文件。

+0

绝对是一种可能性。 itdoesntwork,你在什么平台上,你用什么来编辑.rb文件? – bob 2012-01-28 20:35:27

+0

@bob我在Windows 7上使用Notepad ++。 – itdoesntwork 2012-01-29 15:00:24

+0

@DylanMarkow是的,我想我意外地将它设置为其中一个 - CR或LF,而不是CR + LF。通过复制并粘贴到另一个文件来修复:) – itdoesntwork 2012-01-29 15:03:05

1

这可能是做这件事的正确方法:

class String 
    def to_b 
     return (self == "true") 
    end 
end 
+2

+0.5由于unidiomatic“返回”;-) – tokland 2012-01-28 20:36:56