第1回では、YARVやFiberなど有名な機能と、配列処理の強化について紹介しました。 今回は、Ruby1.9で導入された新しい文法や意味論を中心に紹介します。 ブロックパラメータ(仮引数)に関する変更 ブロックパラメータのスコープがブロックローカルに ブロック中の変数はスコープがやや曖昧でした。初出の変数の場合はブロックローカル(ブロックの終了と共に変数も消える)で、ブロックの外ですでに宣言されていた変数の場合はその変数を指す、というルールで、ブロックの外まで見ないと変数のスコープが判断できませんでした。 この問題を軽減するため、1.9ではブロックパラメータは常にブロックローカルであると改定されました。 コード1 ブロックパラメータがブロックローカルに # ローカル変数xを定義する x = "bear" # ブロックローカル変数xを受け取るブロック(ローカル変数のxとは別!) ["dog