DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ
0953デフォルトの名無しさん2017/08/24(木) 12:32:10.15ID:5a7RKQDl
Arrayから直接派生させるよりも、
EnumerableやForwardable使うほうが普通だとは思うけどね
結果収束的には「可能ではあるが極力行わないようになる」こと自体は間違いはない
なんでもかんでもメソッドチェーンにしないのと似たような感覚
ただし(古い表現だが)足元を弾痕穴だらけにしないとわからない感覚なので、未経験者に最初から指示するようなものでもないな
それはそれで「本当は何もできないやらないわかっていない」机上の人だろう
DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ
0959デフォルトの名無しさん2017/08/24(木) 20:44:43.22ID:tqCPVr7b0
🐒
俺みたいなののほうがマトモなこと言ってるのがもう不思議なぐらいだろ?
それぐらいダメってことなんだよ、言語もコミュニティーも
その場合でもresultをどこかに渡したり
継承で拡張したメソッドを使ったり
実用的なことをしようとした瞬間にコンパイルエラーになる
お前はそのresultを何も使わずにそのまま捨てるのか?
結局、現実的な部分が全くないんだよね
机上の空論、それがRuby
しかも俺は
>気づける可能性が高いよね
とも書いてるわけで
現実的にはどこかの段階でコンパイルエラーになる可能性が高い、と
0967デフォルトの名無しさん2017/08/24(木) 21:55:21.82ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
コンパイルが通ってもその後テストを走らせることになるけどな
0970デフォルトの名無しさん2017/08/24(木) 22:05:10.57ID:Z79NM4TL
再三にわたり伝えましたが、もう一度
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
起こりえるが、可能性は低いわけだ
運良くコンパイルエラーで拾える、というより
運悪くコンパイルエラーで拾えないケースもありうる、ということ
運が良くないとコンパイルエラーで拾えないんなら
静的型言語はこんなに普及してないし、もてはやされてもない
現実が全く見えていないんだね
俺が言うのもなんだけど
ID:Z79NM4TLやID:lIOBscykのが正解だと思うよ
「そんなことは初めから分かってて承知の上で使っているのだから
放っておいてくれ」
って所でしょ
欠点を認められずに使ってる方が異常
0980デフォルトの名無しさん2017/08/24(木) 23:09:32.94ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります
自分が何をしてるか全く理解できないんだろうな
レスがつくことそのものに興奮してここがどこかも判断できていない
貴方達そのものを我々は必要としていない
貴方達が書き込んだそのものを私たちは歓迎しない
我々私たちの望みはひとつだけ、二度とここに来るな
何か映画とかで、スラム街とか田舎町の住人に言われそうなセリフ
0983デフォルトの名無しさん2017/08/24(木) 23:38:06.01ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります
0984デフォルトの名無しさん2017/08/24(木) 23:39:36.79ID:c/yv4qcw
過去のgem配布サイト復活しないかな
「Effective Ruby」項目21にも書いてある
コアクラスを継承するな。委譲・包含(Forwardable)を使え。
is-a よりも、has-a を使え
たいていの言語では、String型なども継承できない。
final 指定されてる
初心者は、コレクションを継承したがるが、アンチパターン。
継承すれば、バグるだけ
たいていの「Effective 何々」とか、デザインパターンの本にも、書いてある
Arrayのような多くの人が慣れ親しんだインタフェースを提供したいと考えてるんだが、
それ自体が慣れで運用してしまうから問題、ということなのか?
極端な話myaddとかにした方がいいのか
JavaScript の、prototype.js なども、コアクラスを上書きして、挙動が変わるから、
皆から、うっとうしがられてる
とにかく、バグるから、個人で、コアクラスを修正してはいけない
やってもいいのは、Date クラスに、便利な関数を追加したり、
Rails とか、使用説明書・メンテナンスもしっかりしている、
有名なフレームワークだけ
0991デフォルトの名無しさん2017/08/25(金) 11:27:54.95ID:BwHFndLq
>>985
項目21の根拠はなんでしょう?
1. 継承を使うとなるとSuper Classの詳細を知る必要がある。
2. 移譲なら使いたい機能をつまみ食いすれば良いので楽。
こう言う事でしょうかねぇ? 例えば、親のArray から、子のDerivedArray を派生させて、
reverse を呼んでも、子クラスを返さず、親クラスを返してしまう
全メソッドを、派生クラスに対応させるのが、無理だから
委譲で、Forwardable モジュールの、def_delegators で、
使うメソッドだけ、宣言する方が簡単
漏れも、10言語以上、数十冊の本を読んでるけど、
配列など、コアクラスを継承した、ソースコードは見た事がないし、
たいていの言語で、継承よりも委譲を使うように書いてある
そういう論文も多い
0993デフォルトの名無しさん2017/08/25(金) 12:36:03.24ID:BwHFndLq
>>992
ところで、論文はどのJournalから? 「c++ 継承 委譲」で検索!
ほとんどの論文が、継承よりも委譲
0996デフォルトの名無しさん2017/08/25(金) 15:28:23.63ID:sLUvaIRs
a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
b=[[1,3,4,5,6,8,9,11,13],[2,3,4,5,7,8,10,12,14]]
aの配列からbの配列を作り出すにはどの様にしたらいいでしょう?
0997デフォルトの名無しさん2017/08/25(金) 15:32:56.84ID:BwHFndLq
>>996
>a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
まずは、
a=[[1,2],[3, 3],[4,4],[5,5],[6,7],8,[9,10],[11,12],[13,14]]
を作る。 0998デフォルトの名無しさん2017/08/25(金) 15:36:12.98ID:BwHFndLq
ar = []
a.each do |e|
if !e.instance_of?(Array) then
ar << [e, e]
else
ar << e
end
まずはこんな感じ!
1000デフォルトの名無しさん2017/08/25(金) 16:00:09.35ID:HsL9LVKJ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 118日 13時間 58分 11秒