なかだです。 At Wed, 19 Jan 2000 20:28:35 +0900, Kazunori NISHI <kazunori / swlab.csce.kyushu-u.ac.jp> wrote: > > 前者はどうするのが美しいかな... > > 正規表現の()?は,nilだったり""だったりするので困りますね. > > これに限らず、文字列を扱う上では、nil 以外に "" (空文字列)も不要な値と > 見倣したい場合も多いので、nil や空文字列を対象とした、'||' や '||=' に > 相当する演算子(と自己代入式)が欲しい、と常々思っていました。 これは分かります。sh の ${var:-default} みたいな感じで、あると 便利なのは確かなのですが。 > (例えば、|||,|||= とすると) > > a = nil > b = "" > > a ||| b # => "" > b ||| "xxx" # => "xxx" > "xxx" ||| "yyy" # => "xxx" > a |||= "xxx" # => (a = "xxx") > b |||= "xxx" # => (b = "xxx") 私はちょっと演算子まではどうかなーって気がして、こういうときは、 Numeric#nonzero? にならって class String def nonempty? self unless empty? end end のようなもので済ましてます。 > みたいな。名前の問題(この場合、&&& との相関性もあるので)を別にすると、 > 件の例でも、 > > - scheme = ( $2 and $2.empty? )? nil : $2 > + scheme = $2 ||| nil > > みたいにスッキリします。ていうか、実際のスクリプトは見てませんが、恐ら > くここで、空文字列の場合に nil を代入しているのは、後で、 > > var1 = scheme || deafult_scheme var1 = scheme.nonempty? || default_scheme なんてとこで妥協するようじゃダメダメのアマアマでしょうか。 -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦