2011-02-16 44 views
3

以下是RubyMine 3.1中的一个小截图。我刚开始学习Ruby。此处的代码来自atomicobject.com上的Presenter-First MVP C#代码生成器。正在调用put无参数错误的练习吗?

我正在使用这个项目以及一本书来学习Ruby。的documentation表明它至少需要一个参数。然而,这段代码似乎“有点合法”,原因有两个:

  1. 当我通过调试器步进通过它时,代码似乎工作正常。
  2. Searching online,甚至here at SO,显示puts不带参数创建一个换行符。

但是,这样做是不好的做法(因此RubyMine警告)?我所看到的代码是从2006年开始的。如果有任何问题,我将使用Ruby 1.9.2运行它。

enter image description here

回答

3

这是完全正常的,因为puts提供了第一个参数“默认”值:

def puts(obj='', *arg) 

至于RubyMine的,它不显示任何错误我。可能发生的情况是,您在代码中的其他地方定义了方法puts?你可以cmd +点击它,以达到定义。

无论如何,如果您能够在一个干净的新项目中重现问题,您可以免费向JetBrains提交错误报告。

+0

@Nikita Rybak,当我点击“Go To Definition”时,我得到这个:`def puts(obj,* smth)`in kernel.rb。这个kernal.rb方法是一个用于索引的存根,文件顶部的注释说:“这是一个使用stdlib-doc的机器生成的存根,用于模块内核 使用的Ruby源代码:Ruby-1.9.1 p0 创建在Wed Jun 17 12:55:08 +0400 2009 by IntelliJ Ruby Stubs Generator。“ – Matt 2011-02-16 14:29:46

1

不,它可能有助于在源代码中创建物理换行符以及输出,并且就像您已经看到的那样,puts完全可以接受零参数。

就个人而言,如果我创建一个多行输出,我更喜欢使用here-doc syntax