昨日、「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]
}
がエラーになるのを受け入れられるかどうか、だな。