2011-02-16 41 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