Ruby1.9でもEND HELLを解消したい!
RubyKaigi2011において
現行Rubyの構文上の欠点である
END HELLを解消するEnd Rubyが
あんどうやすし氏(id:technohippy)により提唱されました
END HELLとは要するに以下のような
醜いendの連なりのことです
module MyModule class MyClass def my_method 10.times do if rand < 0.5 p :small else p :large end end end <- ここ end end
氏はLispのcddddrに倣って
Rubyへのennnnndキーワードの導入を提唱します
ennnnndを使えば先のコードは次のように書けます
module MyModule class MyClass def my_method 10.times do if rand < 0.5 p :small else p :large ennnnnd
変態ですね!
Rubyコミッターらによる実装も完了したようなので
Ruby2.0で正式採用となるのも間違いなさそうです..
http://d.hatena.ne.jp/ku-ma-me/20110718/p1
そこで気がはやい人のために
Ruby1.9でもennnnndを可能とする
ennndライブラリを作りました:)
以下のように使います
まずはあなたのコードを用意します
# mycode.rb module MyModule class MyClass def my_method 10.times do if rand < 0.5 p :small else p :large ennnnnd
ennndライブラリとあなたのコードをrequireして
実行する実行コードを用意します
#req.rb require './ennnd' require 'mycode' MyModule::MyClass.new.my_method
つまりennndキーワードを含むあなたのコードを
ライブラリとして読み込みます
これを現行Rubyで実行します
% ruby req.rb :small :small :large :small :small :large :small :large :small :small
やっぱりRubyは楽しいですね!