上のスクリプトはyieldを使うようにしてみました。p a.Grep(b){x = "b" + "abc"}としてみました。
block_given?がfalseの場合は、xが配列にpushされるので、"b"が入ります。
{}だけだと上の実行例のように、nilが入った配列が作られるようです。
上のスクリプトはyieldを使うようにしてみました。p a.Grep(b){x = "b" + "abc"}としてみました。
block_given?がfalseの場合は、xが配列にpushされるので、"b"が入ります。
{}だけだと上の実行例のように、nilが入った配列が作られるようです。
初めはclass Arrayを省いて、入力してました。しかしエラーです。classでdefを囲むと何故か良いらしいのは
少し記憶にありました。
以前「Rubyプログラミング入門」P154でdef collectの同等のスクリプトが載ってましたが、意味不明で飛ばしてました。
こう言う事だったんですね。何となく分かりました。配列確保して、計算結果を配列にpush、returnはaryと言う事です。
まだ、defをclassで囲う必要があるんでしょうかね。むしろ囲ったことにより、見えないように思うんですが。"(-""-)"
上の2つのスクリプトは意味不明です。実行の結果はあってますが、からくりが見えません。"(-""-)"
分かりやすく解説してほしいものです。
yieldは色んな場面があって、正確に理解してないと、理解不能に陥りそうです。ネットから拾ったものですが
纏めて、あとから見ることもあるかもしれません。
同じプロジェクトに複数のスクリプトを書けます。しかも各々が実行の構成を持ってるようなので、全く違うスクリプトでも
大丈夫だと思います。素数のスクリプトで独自には実行しないprimegen.rbとそれを使うtest-primegen0.rbが同じ
プロジェクトにあって、無いと困る、requireで呼んでましたので、こんなことだったらどうかと思いました。( ;∀;)
sumはsumbを呼んでます。配列を受けてそのまま配列を受け渡してます。多分ですが、p sum(a)を
p sumb(a)としても計算は正常にすると思います。
当然ですが、思った通りでした。(^^♪