私はホテル予約システムのコードをリファクタリングしています。具体的には、学校プロジェクトのためにホテル内のすべての空室を一覧表示する方法です。私たちのインストラクターは彼のソリューションを提供しました。残念なことに、彼と残りの学校は月曜日(私たちのリファクタリングが予定されています)まで休憩しています。 StackOverflow、私はあなたの助けを利用することができます。ホテル予約システムのオーバーラップメソッドRuby
私の質問は、なぜ次のコードでbang(!)が使われたのかということになります。
def overlap?(other)
return !(other.checkout <= @checkin || other.checkin >= @checkout)
end
このコードは、Module HotelとクラスDateRange内のメソッドです。特定の日付範囲の空席を確認するために、別のクラスで呼び出されます。以下を参照してください。
overlap_reservations = @reservations.select do |res|
res.overlaps(dates)
end
私の考えでは、私はバングを利用しませんでした。しかし、私は初心者であり、ここでの相互作用の目隠しです。あなたが提供できるどんな助けもありがとうございます。
この文脈では、 '!'は 'not'を意味します。つまり、括弧内のコードが 'true'と評価された場合、メソッドは' false'を返し、括弧内のコードが 'false'と評価された場合、メソッドは' true'を返します。あなたが提供した2番目のメソッドは 'overlap? 'を呼び出さず、' overlaps'を呼び出します。これはまったく別のメソッドです。 – moveson
ありがとう@moveson。私は方法の重複をタイプミスをした?重複しているはずだった。あなたの洞察に感謝します。 – aprogrammer