いろんな言語で Trick or Treat

いろんな言語で Trick or Treat してみました。

Java

if(!treat) trick();

C#

if(!Treat) Trick();

Python

if not treat:
    self.trick();

Ruby

trick unless treat?

結論: Ruby が一番シンプル

おまけ

|| の短絡評価を使えばもっとシンプルに書けます。

しかし、英語とは Trick と Treat の順番が逆になります。

C

treat || trick();

Ruby

treat? or trick

上のような書き方だと、JavaやC#などの言語だと、文だとみなしてくれないのでコンパイルエラーになります。

仕方ないので代入文にして回避します。

Java

//treat || trick(); // コンパイルエラー
boolean r = treat || trick();

C#

var r = Treat || Trick();

trick() に副作用があるとしたら、こういう書き方は避けるべきですが、今回はあえて利用しています。 普通はこういうコードを書かないほうがいいと(個人的には)思います。

元ネタ

comments powered by Disqus

gam0022.net's Tag Cloud