昨日、「ElevenのアイディアをRubyのライブラリとして実装する人はいないだろうか」などと書いたら、 moriqさんがRailsで実装してくださった。
こんな感じ。
require 'eleven' class FooController < ApplicationController include Eleven statesafe :first, :last display { print "Please enter your name." edit "First name: ", @first edit "Last name: ", @last } display { print "Thank you, ", @first, " ", @last, "." } end
第一歩としては上出来ではないだろうか。
昨日プレッシャーをかけておいたので、 Meetup Groupミーティングのレポートのようなもの が、かずひこくんのところにアップされた。注目。
昨日のミーティングで話そうと思ってて、 あまり盛り上がらなかったので触れなかった話題。
Rubyのブロックスコープをなんとかしたいとずっと考えてきた。 で、今までにもいろいろなアイディアを練ってきたのだが、なかなか決められなかった。 最近になってやっと「これなら」というものが出来上がったように思う。
仕様は以下の通り。
今まで「2.0ではこうする」と宣言してきたものとは違うが(特に※の部分)、 互換性はより高いし、使い勝手も悪くなってないと思う。 特に「ブロック内初出のローカル変数のスコープ」については、 メソッドスコープにすることを強く反対していた dblack はよろこぶことだろう。
さて、これにより
3.times {|i; a| a = 5 p [i, a] }
のような文が許されることになる。本当は
3.times {|i; a=5| p [i, a] }
のように初期化もいっしょにしたいが、「|」が式の中に登場することのある演算子なので、
のいずれかになりそうだ。
3.times {|i; a=2+3| p [i, a] }
がエラーになるのを受け入れられるかどうか、だな。