Rubyについての私の理解は、クラスの新しいインスタンスを作成するために、 'new'キーワードが常にクラス名と結合されていることでした。 Ruby Programming Challenge for Newbiesコンテストの解決策として提出されたhttps://gist.github.com/e9c0da1a6e92dd12cbc7のコードで、著者はクラスをインスタンス化せずに3回「new」キーワードを使用します。Ruby:クラスなしで '新規'
あるケースでは、新しい(0,0)が定数CLOSEDに割り当てられます。別のケースでは、new(open、close)は関数からの戻り値です。それはなぜこの方法ですか?このように使われたとき、「新しい」ことは何ですか?それは何を作成していますか? Rubyで
class OpenHours
attr_reader :open, :close
def initialize(open, close)
@open, @close = open, close
end
def duration
@duration ||= @open < @close ? @close - @open : 0
end
CLOSED = new(0, 0) #first new
def self.parse(open, close)
open = Time.parse(open)
close = Time.parse(close)
open = TimeUtils::seconds_from_midnight(open)
close = TimeUtils::seconds_from_midnight(close)
new(open, close) #second new
end
def offset(seconds)
self.class.new([@open, seconds].max, @close) #third new
end
end
OpenHoursのインスタンスnew(open、close)を返すself.parseメソッドもありますか?何かに割り当てられてはいけませんか? – BrainLikeADullPencil