6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

レストラン「デメテルの法則」

Last updated at Posted at 2017-03-09

第一日

とあるレストランを訪れたお客さん。

メニューにはこう書かれています。
「シェフと料理をお選びください」

image

お客さんは、シェフのアリスにカレーを注文しました。

Restaurant.alice.curry

# => Yes sir! I cooked curry.

「これは、うまい!」
無事満腹になりました。

第二日目

あまりの美味しさに、今日も同じレストランを訪れたお客さん。
今度はボブにカレーを注文しました。

Restaurant.bob.curry

# => CookingError: I could not cook curry!

よく分かりませんが、ボブはカレーを作れないようです。
(そんなシェフがいる? あとで聞いた話によると、ボブは慢性的カレー粉アレルギーということです)

仕方がないので、ステーキを注文することにしました。

Restaurant.bob.stake

# => Yes sir! I cooked stake.

カレーは食べられなかったもの、無事満腹になりました。
(ボブはカレーを作れない。じゃあ何故、シェフを選ばせるんだろう?)

第三日目

レストランのメニューが変わっていました。
今日からは、料理だけを選べば良いみたいです。

image

今日はお腹が空いているので、カレーとステーキの両方を注文しました。

Restraunt.curry 
# => Yes sir! I cooked curry.
Restraunt.stake
# => Yes sir! I cooked stake.

やったね! どちらも美味しくいただきました。

厨房ではアリスがカレーを、ボブがステーキを作ってくれたみたいですが、お客さんはシェフまで選ぶ必要はありません。
(今後はキャロルやデイブがシェフとして雇われて、カレーやステーキを作るようになるかもしれません)

エピローグ

こうやってお客さんもアリスもボブも幸せに暮らし、レストランも永遠に繁盛しましたとさ。

めでたしめでたし。

コード例

カレーを作れるアリス

class Alice
  def self.curry
    puts 'Yes sir! I cooked curry.'
  end
end

ステーキを作れるボブ

class Bob
  def self.stake
    puts 'Yes sir! I cooked stake.'
  end
end

不親切なレストラン ( before )

class Restaurant
  def self.alice
    Alice
  end

  def self.bob
    Bob
  end
end

親切なレストラン ( after )

class Restaurant
  def self.curry
    Alice.curry
  end

  def self.stake
    Bob.stake
  end
end

備考

  • ツッコミあれば教えてください。

環境

  • ruby 2.4.0

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?