ごとけんです
In message "[ruby-list:18602] Re: [book] $*, etc."
on 99/11/15, "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> writes:
>1.Ruby本35ページ付近から
> クラスやメソッドには、変数や定数のような命名規則はあるのでしょうか?
> (多分ない。後に変数や定数の説明があるので、ここでも一言ほしいよう
> な...)
字句規則としては次の通りです(たぶん)。
* クラス名は大文字ではじまる。英数字と _ で構成されている。
* 演算子以外のメソッド名は a-zA-Z_ ではじまり英数字と _ で
構成され、末尾に ? か ! か = をつけることが出来る。
>2.Ruby本50ページ
> []はオブジェクトなのでしょうか?
> (多分オブジェクト。でも、ここでは....)
> また、なんで[]でなくてはいけないのでしょうか?
[] は空の配列(Arrayのインスタンス、つまりオブジェクト)です。
分かんなかったらまたきいて下さい。
>3.Ruby本65ページ
> catch/throwの動作ですが、C++のcatch/throwと動作が異なるようですが
> いかがでしょうか?
> C++のcatchは例外を補足したときにcatchブロックの中が実行されます.
> rubyでは、例外を補足したらcatchブロック定義の外の最初の行が実行される
> と理解してよろしいのでしょうか?
> もし、そう理解するとrubyのcatchブロックの中は一体どう理解すれば良いの
> でしょうか?foo2を呼び出している間だけcatchできるという意味でしょうか?
> つまり、C++のtryブロックに相当するものがrubyのcatchと理解してよいので
> しょうか? そうすると、catchした後でthrowする?
>
> さらに、catchの戻り値の使用例があると良いのですが。
まず throw が投げるのは例外ではなく catch が拾うための名札と
値の組です。例外は throw,catch ではなく raise で起こし begin
の rescue 節で拾います。Rubyの throw と catch の目的は大域脱
出と値を投げることにあり、障害復旧の処理を行うことではありま
せん。throwが投げる値のデフォルトはnilです。次の例は、結果的
に x = num > 0 ? num : nil と同じ働きをします。
x = catch(:hoge){ throw(:hoge) unless num > 0; num }
C++に関連していうと
try { 処理A ... }
catch(hoge) { 処理B ... }
は Ruby では次に相当するでしょう。
begin
処理A
...
rescue
処理B
...
end
>4.Ruby本81ページ
> 「.....きっと理解できます。」なんとか自分なりに理解したつもりですが、最
> 初 ...\w+,?... の ,? がちょっと引っかかりました。例には ',' は無いし、
>簡単
> な説明があればと思いました.
「?」は73頁にあるように、直前の表現の0回または1回の出現です。
81頁の例では
".... Mon, Nov 15 12:34:56 1999"
".... Mon Nov 15 12:34:56 1999"
のいずれにもマッチできるようにするためにあります。
>5.Ruby本177ページ
> Mix-inが良くわかりません.図4-8や図4-9は木構造なのでしょうか?
クラスは1本線の枠なので木構造です。
> Mix-inを活用することでメソッドの干渉などがどのように防げるのか
> いまひとつ理解できません.
特にどの辺が分からないかをなにか実例をあげて下さると他の方も
説明しやすいかも知れません。あるいは慣れたら自然と分かるかも
知れません ^^;;;;
一般的な傾向として、具体的な短いコードサンプルを上げてもらう
と話がしやすいです。コードサンプルが出せないはなしは(ぼくも
よくやってしまうのだけど)どういう解答を期待しているかが分か
りにくいことが多いような気がします。
それから、細かい疑問はCDに付属の(もしくはWebで見れる)リファ
レンスマニュアルやFAQや http://ruby.freak.ne.jp のMLトピック
スを参照するとよいかと思います。メタな情報として
[ruby-list:14326] も参考になるやも(てゆーか俺も参考にせねば :-)
-- gotoken