西@九大です。

From: nobu.nakada / nifty.ne.jp
>   私はちょっと演算子まではどうかなーって気がして、こういうときは、
> Numeric#nonzero? にならって
> 
> class String
>   def nonempty?
>     self unless empty?
>   end
> end

これ、面白いですね。新たに演算子を導入しなくても、各クラスで empty? を
適切に定義するだけで、文字列以外のクラスでそのまま利用できますね。

>   var1 = scheme.nonempty? || default_scheme
> なんてとこで妥協するようじゃダメダメのアマアマでしょうか。

上記定義の String は Object の間違いですよね?これだと、(元々の要求で
ある) scheme == nil の場合にエラーになるので。

あと、やはり名前が難しいですね。上記のように、真偽値として使う(後に||,
or を伴う)場合は nonempty? でも構いませんが、元記事の例のように、戻り
値として値を直接利用する場合に '?' というのは、多少違和感が。。。

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

「あるオブジェクトが、自身のクラスとして有効な値(なければ nil)を返す」
を表すメソッド名、、、

       scheme = $2.valid_value
       scheme = $2.validate

うーん、かっこ悪い。(しかも、他動詞。。。)

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