Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお Ruby on RailsについてはWEBプログラミング板で 前スレ Ruby 初心者スレッド Part 61 https://mevius.5ch.net/test/read.cgi/tech/1503644351/ るりまサーチ (リファレンス検索) http://rurema.clear-code.com/ Rubyist Magazine - るびま http://jp.rubyist.net/magazine/ 逆引きRuby http://www.namaraii.com/rubytips/ >>408 > 出来る出来ないの話に戻したな いつ俺が出来る出来ないの話に戻した? 実際にRubyMineを使っている人が、 出来ないって言ってるって話? >>410 > ここはおまえの日記帳じゃない そりゃ俺の日記帳じゃないよw みんなの日記帳だよ 便所の落書きなんていい方もされているが 俺はその言い方は好きではない 単発IDで自演しまくる自治厨騙りの荒らしには構うな スルーしろ アンチスレで好きなだけやれ ここはお前のようなアンチのためのスレではない 見えない敵と闘っていないでアンチスレへ帰れ そこなら好きなだけ自演しても誰も文句を言わないから はっきり言わないと理解できないのかな? 俺はアンチスレには行きません 何度言われてもね アンチやりたいならアンチスレへ行け ここは初心者のためのスレだ 初心者を騙すためのスレではない そもそもなんでアンチは発狂してんの? 顔真っ赤にしてないで落ち着けよ そんなに初心者スレで荒らし行為やアンチをやりたいのか? 荒らしてないよ? Rubyでリファクタリングは静的言語よりも 大変だって話をしてる 初心者スレじゃないと話せないことなのか? アンチスレでは話せないのか? 初心者スレ以外でも話せるよ ただしアンチじゃないからね。Rubyの特徴を言っているだけ アンチスレ以外のRubyスレどこででも話をする お前のやってきたことはアンチ以外の何者でもないんだが これからも、同じ事を続けていく気か? つまり、他の人にアンチ行為と受止められていると判ってて、 故意に続けるわけだな? やめる気は無いのか? 他の人に故意に不快を与える行為を続けるという事だね 板やレスの利用等を理解しているか? つまり、わかった上でやっているという事だね それと、いまさらだがruby初心者? つまりRuby初心者だから間違ったことを言っていたという事だね それはつまり、これからも間違った事を言い続けるって事かな? その返答は、今後は反省して間違ったことを言わない、って事を意味しているのかな? __ , ‐' ´ ``‐、 / ̄:三} . /,. -─‐- 、. ヽ / ,.=j _,.:_'______ヽ、 .! ./ _,ノ `‐、{ へ '゙⌒ `!~ヽ. ! /{. / `! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ そんなことより野球しようぜ! . {.l '⌒ ゙ 6',! / :::::::::::::::/ __ . 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、 . ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ ,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 / / / :::::::::::::::: ; '´ /´\ / r'\ . i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、 { {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \ . ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: / 君は、いままでアンチを繰り返し多くの人を故意に不快にさせてきたわけだが、 今後も続けるのかい? 飽きた、>>409 まで内容巻き戻すわ 動的言語がなぜリファクタリングに弱いかというと いつクラスの定義が定まるかを考えてみればわかる まずリファクタリングというのはソースコードを修正する そしてクラスの定義はソースコードから生成される この時、ソースコードからクラスの定義が単純に決まれば良いのだが 動的言語では、実行するまでクラスの定義が決まらない ならば実行すればいいと思うかもしれないが、何をどう実行すれば クラスの定義が定まるのかを知る方法がない つまりクラスをリファクタリングする場合、 クラスの完成形を知ることができないので、 人間が判断するしかなくなってしまい時間がかかる ではもう一度聞こう 今後は反省して間違ったことを言わない、という意思はあるのかな? そんなことよりJOI2017/2018の話しようぜ Rubyについて知らない事を知ったふりして話してたわけか 道理で Ripper.sexp_rawからRipper.sexpに戻すと:stmts_add等が削られて微妙にやりにくい 全部rawの方でいい気がするがRipper.sexpってどういう時に使うんだ? あれてんなw 型の次は、リファクタリングかよ 初心者の内容か? 俺の場合GoFなんかで書き直したい病が持病です。 んでrspec漏れてしょうもないバグおこす。 ほどほどに持病と付き合おうw >>450 pで見る用に使ってる Ripper.sexp_rawはppで見ても長いから やっぱり表示用なんだ それから出力された配列の操作なんだけど、 配列の中ごろ特定の要素を基に「上の配列に○○が在りかつ後ろの要素に△△があったら××」、 みたいな同定の仕方をしてるんだけど問題ある? リファクタリングで香ばしい展開になっててわろた オレがおっさんになったのが、たまたま住人がアホなのか、2ch民全体のレベルが下がったのか >>455 自治厨の振りした基地外が一人で自演しまくって荒らしてるだけだから無視な 荒らしの狼藉は>>252 参照 >>455 Rubyはとっつきやすい分、ニワカとか、簡単だと思って挫折した勘違い君も多いからな。 リファクタリングにしても、用語の定義とか目的知らずに書いてるなあ、ってのばかり。 きちんと理解しようと思ったら、ガウディ本(CTMCP)で計算モデルを理解するのがお勧め。 あと「リファクタリング:Rubyエディション」とかで、以下を把握できる。 ・リファクタリングはプログラム改善に使われることが多い。 ・数多ある改善基準のうち、リファクタリングは何を対象にしているのか? ・改善手法は、計算モデルと、改善の目的により様々。 >>457 なんかリファクタリングを理解してないようにみえる。 リファクタリングと計算モデルがどうつながるのか説明してみ その後、あんたの意見と同等の話をしているサイトを言ってみ リファクタリングと計算モデルは ほとんどつながりがないことがわかるからさ 結局、荒らしはアンチスレに帰らんかったのか そりゃアンチスレも落ちぶれるわ >>428 >Rubyでリファクタリングは静的言語よりも >大変だって話をしてる いいや、している話は: 「動的型付け言語は静的型付け言語よりも大変だ」 だよ その主張は(個人的には)認めるけど、それだけでRubyスレに 粘着するのは荒らし行為そのものではないかな? http://hissi.org/read.php/tech/20171219/c2k1Vzd1QUQ.html それだけ「動的型付け言語におけるリファクタリング」に関心があるなら、 >>107 で紹介した専用スレへ移動すべきだよ >>460 俺はそんなことは言ってないので他人の意見だね Rubyが大変なのはソースコードを読むときだよ。書くときは比較的楽。 楽の意味がわからないなら、タイプ数が少ないと言い換えても良い Rubyは書くときは楽で、読むときは大変 静的型付け言語はその逆 理由はまんまだが型という情報が書いてあるから。 情報を多く書かなければいけない静的型付け言語は大変で でも情報が多く有るから静的型付け言語はわかりやすい ただし前提として複数のモジュール(クラス等)から成り立ってる場合と 言ったほうが良いかもな。ローカル変数なんかは型が書いて無くても すぐ近くにコードがあって該当の関数しか見なくていいから型がなくても大丈夫 一番の問題は複数モジュールから成り立っていて、特に別ファイルに分かれている場合 こういうのはドキュメントとして型情報を書いておかないと、わけわからなくなる だけどドキュメントとして型情報書くなら、タイプ数は静的型付け言語より多くなってしまうので本末転倒 Rubyは書くときは楽(ドキュメントを書かないという前提)で、読むときは大変 ドキュメントを書くなら、それはソースコードに一元化した方がいいよって話になる 中身スカスカの長文なんてよく書き込めるな 頭の中もスカスカしてそう >>462 そのレスは何が言いたいのだ? そのレスの中身を教えてくれw rubyの可読性のよさには感動する DSLとかすごい たまーにendだらけになるのは難点w 動的にリファクタリングさせるコード書いてるけど、 書けないやつはrubymine使えば良くね? 配列の操作そのものが難しいと勘違いしてるんじゃないか? 配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ class Array def acces(ary = []) return self if ary.empty? colect_int = ary.dup result = self[colect_int.shift] return colect_int.empty? ? result : result.acces(colect_int) end end 配列が苦手とか言われても パーサから順にイベントを渡されて処理するより明らかに難易度低いだろ 今のところ、リファクタリングについて誰ひとり説明できてないぞ? もっとシンプルに表現できるだろw >>458 数十レスも書いといて「リファクタリングとはこういうものだ」とすら書けない奴が何か言ってる。 毎朝7時8時から書き込める荒らしは何の仕事してるんや? RubyVM::InstructionSequence.compile("class Hoge end").eval のコードを実行したら直後に p Hoge.new って問題無く書けるのか コンテクストが別々だと勘違いしてた >>470 リファクタリングを理解してませんと認めたってことでOKだね >>472 俺は出勤が9時だからだよw 会社まで30分 >>466 > 配列の操作そのものが難しいと勘違いしてるんじゃないか? > 配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ 書けてないだろ? それ何の処理するコードだよ [1,2,3].acces([]) => [1, 2, 3] [1,2,3].acces([1]) => 2 [1,2,3].acces([1,2]) NoMethodError: undefined method `acces' for 2:Integer from (irb):6:in `acces' from (irb):29 from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>' お前がそれじゃ、配列は難しいという結論にしかならんぞ >>468 > 今のところ、リファクタリングについて誰ひとり説明できてないぞ? > もっとシンプルに表現できるだろw ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること 補足を追加するならば、 振る舞いを保てていればいいので、アルゴリズムを変えてもOK というか、無駄があったりしてわかりにくいアルゴリズムを 理解や修正が簡単になるように書き換えることもリファクタリングの一つ 何が言いたいかというと、リファクタリングはパースした結果が 一致するように書き換えることではないということ パースできたからといって、リファクタリングができたことにはならない >>477 アンチスレへ帰れ おまえが働いていないのはわかったから >>479 いい加減学習しよう 422 自分:デフォルトの名無しさん[sage] 投稿日:2017/12/19(火) 01:06:10.31 ID:si5W7uAD [10/23] はっきり言わないと理解できないのかな? 俺はアンチスレには行きません 何度言われてもね >>480 初心者を騙していないではやくアンチスレへ帰れ デマばかり垂れ流しやがって 例えば、構造やサイズが変わる多次元配列の要素を辿って行く必要がある場合、 添え字だけ集めて一括指定で辿れる様にするのって普通? >>477 >ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること オブジェクト指向知らないやつがググってコピペか・・・つまらん。 >>483 def pickup(a,b,c,d) a[b][c][d] end みたいな? あ、これじゃ次元数が固定だからダメなのか 文字列に対して ・0〜9の一桁の数であれば頭に0を付け足す(例:00,01 ・10以降はそのまま という処理を行いたいんですが、正規表現でスパッとかけたりするんでしょうか イメージとしては text = "9"なら09 text = "10"なら10 として出力(print)がしたいです gsubで置換できないか試しているのですがうまいこといかず・・・ アドバイス頂けますと幸いです 正規表現よりも sprintfフォーマットを使おう puts "%02d, %02d,%02d,%02d" % [1,5,10, 100] #=> 01, 05,10,100 sprintf "%02d" % 9 sprintf "%02d" % 10 ちなみにあえてgsubでやるなら '1'.gsub(/^(?=\d$)/, '0') #=> "01" '42'.gsub(/^(?=\d$)/, '0') #=> "42" %w(0 1 5 9 11 99 108 1024 16384).each do |x| p x.sub(/^([0-9])$/) { "0#$1" } # キャプチャを使った例 # p x.sub(/^(?=[0-9]$)/) { "0" } # 先読みを使った例 # p "%02d" % x.to_i # 整数値に変換して書式文字列を使った例 end "00" "01" "05" "09" "11" "99" "108" "1024" "16384" ありがとうございます!sprintf、こういう風に使えるのですか。便利ですね・・・ 正規表現での場合も教えていただきありがとうございました 勉強になりましたm(_ _)m >>493 すみません、ID変わってますが>>488 です 正規表現は後で泣くからなるべく使わないほうがいい。 もし使うのなら 複雑のは避けて シンプル+シンプルと組み合わせて使うといい。 おい >>466 配列操作簡単なんだろう? バグ修正はまだか? >>461 >俺はそんなことは言ってないので他人の意見だね いいや、もろに言ってるよ 君のレスに含まれるRubyという単語を改変してみた: >動的型付け言語が大変なのはソースコードを読むときだよ。書くときは比較的楽。 >楽の意味がわからないなら、タイプ数が少ないと言い換えても良い : >理由はまんまだが型という情報が書いてあるから。 >情報を多く書かなければいけない静的型付け言語は大変で >でも情報が多く有るから静的型付け言語はわかりやすい なんら違和感もないだろう?あいも変わらずごく当たり前な一般論を語っているだけ さあ、Rubyに限定されない「動的型付け言語におけるリファクタリング」を 語りたいのなら、このスレに粘着せず、>>107 で紹介した専用スレへ移動しなさい >>497 改変しておいて、俺が言ってるとか意味不明 改変しなければ、言ってないってことじゃないか 496から498までの自演を見てると小学生の演劇見せられてる気分になる って事で晒しage >>497 >>461 はたぶんちょっと勘違いしてる。 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、 リファクタリングが楽だと思ってるんじゃないかな リファクタリングの考え方は言語は関係ないよ これでTypeScriptやPython方式の型ヒンティングが来たらコミュニティが大荒れするだろうな Ruby 2.5.0-rc1 リリース (12月14日) https://www.ruby-lang.org/ja/news/2017/12/14/ruby-2-5-0-rc1-released/ ★ 新機能 ★ * バックトレースおよびエラーメッセージが逆順に出力されるようになった (Railsゴリ押し?) * トップレベルにおける定数検索の削除 * rescue/else/ensure が do/end ブロック内にも直接書けるようになった * yield_self の追加 ★ パフォーマンスの改善 ★ (略... ★ その他の注目すべき 2.4 からの変更点 ★ * Onigmo 6.1.3 の取り組み (実際は Ruby 2.4.1 にて取り込み済み) * bundler の取り込み その他略... 詳細は https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS に書かれてる ☆彡 ☆彡 ☆彡 ☆彡 ☆彡 第三者の記事: * サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 https://qiita.com/jnchito/items/f182b6f0093a6a3701a1 >>500 > 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、 > リファクタリングが楽だと思ってるんじゃないかな 違うよ。静的型付け言語の場合が簡単なのは、 ソースコード上に型が書いてあるからだよ コンパイルエラーは関係ない 例えば class Klass { (間違って途中で送信した) 例えば class Klass { function foo() { } } みたいなクラスがあって、 fooをbarに書き換える時 ↓ このように型が書いてあれば、ここのfooもbarに 書き換えなきゃいけないとわかる function f(Klass k) { k.foo(); } ↓ でもこの場合は、書き換えれば良いのかわからない function f(k) { k.foo(); } ソースコード全体から、fを呼び出している所をすべて探して 引数にKlassクラス(もしくはそれを継承したクラス)を 渡していることを確認しなければいけない 今回は一番簡単な例としてメソッド名の変更を例にしたが 例えば、メソッドの引数の数が変わったときも 型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる メソッドが消えたこともわかる クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね シグネチャの変更に関わる部分は、静的型付け言語の場合は すごく簡単に変更すべき場所を特定できる Rubyの静的解析の難しさに関して言えば、単にソースに型が書いてないというだけではないんだよなあ Rubyって、静的なクラス定義というのがそもそも存在しないんだよ 動かしてみて、RubyのVMのメモリ上に結果としてクラスオブジェクトができて、そこではじめてクラスが定義されたことになるの この式のクラスは何か?とか考える以前に、クラスなんてものは動かしてみるまで無いの ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる