2

このコード スニペットを実行しているとします。

class Song
  def initialize(name, artist, duration)
    @name = name
    @artist = artist
    @duration = duration
  end

  def to_s
    "Song: #{@name}--#{@artist} (#{@duration})"
  end
end

SongA = Song.new("Bicyclops", "Fleck", 260)
puts SongA.to_s

に置き換えるSongA = Song.new("Bicyclops", "Fleck", 260)SongA = Song.new("Bicyclops", "Fleck")、エラーが発生します。これはRubyコードの構成によると正常ですか?

ところで、ここから例を取得しました。しかし、このドキュメントを閲覧した後でも見つけるのに苦労しています。あなたが私に向けたリソースを前もって感謝します。

4

1 に答える 1

2

関数定義で入力パラメータのデフォルト値が指定されていない場合は、それらを指定する必要があります。

  # Default artist is Nobody
  # Default duration is nil
  def initialize(name, artist='Nobody', duration=nil)
    @name = name
    @artist = artist
    @duration = duration
  end

次に、デフォルト値を定義したプロパティを省略して初期化できます。

# Using lowercase songA instead of SongA since 
# ruby will treat the uppercase SongA as a constant...
songA = Song.new('Bicyclops')

また、いずれかですべてのクラス プロパティを初期化する必要はありませんinitialize()。それらは他の方法で追加および初期化できます

def other_method
  @other_prop = "Another property"
end
于 2012-05-15T01:43:20.200 に答える