西@九大です。
#今日のリクエスト

From: "NAKAMURA, Hiroshi" <nakahiro / sarion.co.jp>
> 前者はどうするのが美しいかな...
> 正規表現の()?は,nilだったり""だったりするので困りますね.

これに限らず、文字列を扱う上では、nil 以外に "" (空文字列)も不要な値と
見倣したい場合も多いので、nil や空文字列を対象とした、'||' や '||=' に
相当する演算子(と自己代入式)が欲しい、と常々思っていました。
(例えば、|||,|||= とすると)

	a = nil
	b = ""

	a ||| b		# => ""
	b ||| "xxx"	# => "xxx"
	"xxx" ||| "yyy" # => "xxx"
	a |||= "xxx"	# => (a = "xxx")
	b |||= "xxx"	# => (b = "xxx")

みたいな。名前の問題(この場合、&&& との相関性もあるので)を別にすると、
件の例でも、

-      scheme = ( $2 and $2.empty? )? nil : $2
+      scheme = $2 ||| nil

みたいにスッキリします。ていうか、実際のスクリプトは見てませんが、恐ら
くここで、空文字列の場合に nil を代入しているのは、後で、

	var1 = scheme || deafult_scheme

という使い方を想定している気がしてます。(見ろよ)。もし、上記の演算子な
り自己代入文が提供されれば、そういう場合、先程のパッチ部分のコードも殆
ど不要になり、全体的にもの凄く簡略化されると思いますが、どうでしょうか?
(また暗号になってしまう?)

名前の問題はおいておくとして、機能的に必要かどうか(組み込みで提供する
かどうか)に関して、どうでしょうか?

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
      西 和則   ( e-mail: kazunori / swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------