From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-03-20T14:20:54+09:00 Subject: [ruby-dev:1872] [Req] default value [Re: [Req] Comparable#min/max] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01808 ] the message: "[ruby-dev:1808] Re: [Req] Comparable#min/max ", on Mar/16 18:54(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >| a = b if b = (exp) >| >|みたいな文て許されてないんですね. bは初出のローカル変数です. 式(exp)を >|計算して, それがnil(false)以外だったらaその結果をaに代入したかったんで >|すけど... > >ダメですね.ローカル変数の宣言は登場順ですから. >ここを変えるのは実装的に大変だってのもあるんですが,やはり登 >場順というルールにしたがった方が良いだろうと思います. そうそう. こういうのもありました: a = nil a = DEFAULT_VALUE if defined?(DEFALUT_VALUE) これもシンタックスエラーなんですよね... # この書き方が奇麗なのにエラーになるのがなんとなく悔しい(^^;;; a = nil if defined?(DEFALUT_VALUE) a = DEFAULT_VALUE end はなんとなくだし... defined?(DEFAULT_VALUE) && a = DEFAULT_VALUE perlっぽくて好きになれないし(^^;;; # lispっぽくもありますが... begin a = DEFAULT_VALUE rescue a = nil end も... ということで, リクエストをすることにしました(^^;;; [案1] defined?に似た関数(構文)でもし定義されていたらその値をそのまま返すとい うのがあると, 嬉しい. a = const_value(DEFALUT_VALUE) [案2] 次のようなイテレータ: a = default_value(defval = nil){DEFALUT_VALUE} で{...}を評価し例外が発生したらdefvalを返すものです. 後者なら, 簡単な式を実行して例外が起こった時のデフォルトバリューを返し たい場合にも使えて結構いいんじゃないですかね? そう考えると, 次のような 感じでもよいかな? a = perform(defval = nil){EXP} __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---