Ruby方法列表:";意外的kDEF,应为$end“;
我不得不问这个问题,我觉得很傻,但这让我难堪了太久。尝试运行以下命令时,我发现Ruby方法列表:";意外的kDEF,应为$end“;,ruby,Ruby,我不得不问这个问题,我觉得很傻,但这让我难堪了太久。尝试运行以下命令时,我发现 finance.rb:1:语法错误,意外的kDEF,应为$end def get_sign(input) return "+" if input.include? "+" return "-" if input.include? "-" end def get_account_name(input) if input.split[0] == "new" return input.split.reject{
finance.rb:1:语法错误,意外的kDEF,应为$end
def get_sign(input)
return "+" if input.include? "+"
return "-" if input.include? "-"
end
def get_account_name(input)
if input.split[0] == "new"
return input.split.reject{|x| x == "new" or x == "account"}[0]
else
return input.split[0]
end
end
如果我将它们包装在一个类中,它只希望
如果我将这个问题中的内容复制/粘贴到一个新文件中,我不会得到这个错误。如果您这样做(将此网页复制/粘贴到新文件并保存),您是否仍会收到错误?如果没有,可能您的文件中有一些垃圾空白
添加为答案,因为其他用户可能会发现此问题具有类似问题,而不是通读所有注释以找到解决方案。是的,就是这样。方法甚至没有被调用。在Ruby中使用return
是不常见的,而且很少需要;您的第一个方法可以重写为:def get\u sign(input)\nif input.include?“+”\n“+”\nelsif input.include?“-”\n“-”\nend\nend
,您只需从第二种方法中删除return
关键字,即可获得更好更快的代码。您的代码在Linux上使用MRI 1.8.7为我编译。你是怎么运作的?如果您只是键入/finance.rb
,您需要一个shebang作为第一行(例如“#!/usr/bin/ruby1.8”)。如果我将此问题中的内容复制/粘贴到新文件中,则不会出现此错误。如果您这样做(将此网页复制/粘贴到新文件并保存),您是否仍会收到错误?如果没有,也许你的文件中有一些垃圾空白?啊。重新输入一个新文档使它工作起来,一定是某个愚蠢的隐形角色把它搞乱了。