プログラミング言語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/
探検
Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
290デフォルトの名無しさん
2017/12/10(日) 22:15:37.82ID:TsNv+js2 型システムに関する最新の教科書であるTAPL本だとクラス=型だけど、
TAPL本を古典と言い切ってしまえる>>289は異次元世界の住人なのかな?
TAPL本を古典と言い切ってしまえる>>289は異次元世界の住人なのかな?
291デフォルトの名無しさん
2017/12/10(日) 22:24:25.24ID:ML6lMJWk TAPL本を古典なんてどこにも書いてないんだが?
なに一人連想ゲームしてんの?
なに一人連想ゲームしてんの?
292デフォルトの名無しさん
2017/12/10(日) 23:46:36.31ID:EJLWoC7C 型チェックってどうして望まれてるの?
Kernel#instans_of? とか Module#=== を使って
TypeErrorを投げればいいんじゃないのと初心者としては思うんだけど、誰か教えて><
Kernel#instans_of? とか Module#=== を使って
TypeErrorを投げればいいんじゃないのと初心者としては思うんだけど、誰か教えて><
293デフォルトの名無しさん
2017/12/11(月) 00:11:37.08ID:toSfFiY3 >ruby-devはrubyの開発者のためだから場所が正しくない
>Ruby初心者の質問と回答はここしかないな
みたいなカン違いししてるのでなければruby-devで聞きなよ
>Ruby初心者の質問と回答はここしかないな
みたいなカン違いししてるのでなければruby-devで聞きなよ
294デフォルトの名無しさん
2017/12/11(月) 00:22:43.20ID:zjLRjNAe 結局、荒らしはrubyコミュで発言せず逃げたままか
ruby-listやruby-devでいったい何をしでかしたんだアイツ?
ruby-listやruby-devでいったい何をしでかしたんだアイツ?
295デフォルトの名無しさん
2017/12/11(月) 00:32:30.84ID:Iio3nuGz296デフォルトの名無しさん
2017/12/11(月) 00:45:28.12ID:3l4LlxuK >>292
大規模プログラミング症候群に患わった人たちがおもに困ってる
それとinstans_of?とかModule#===とかが目立つのはRubyらしくない
引数として与えられたオブジェクトは必要なメソッドがあるものとして記述する方がいい (ダックタイピング)
ifやcaseでやたらとクラス名が出てくるべきじゃない
こういう振り分け処理はrefinmentできれいに分離できるし何より見通しが良くなる
case obj
when nil
...
when Integer
...
when ...
...
else
raise TypeError
end
これはrefinmentと組み合わせれば
obj.do_it
だけで済むし分岐のための Module#=== が呼ばれなくなるから処理速度も悪くならないはず
特に似たような処理が散乱して困るようならば検討するべき
大規模プログラミング症候群に患わった人たちがおもに困ってる
それとinstans_of?とかModule#===とかが目立つのはRubyらしくない
引数として与えられたオブジェクトは必要なメソッドがあるものとして記述する方がいい (ダックタイピング)
ifやcaseでやたらとクラス名が出てくるべきじゃない
こういう振り分け処理はrefinmentできれいに分離できるし何より見通しが良くなる
case obj
when nil
...
when Integer
...
when ...
...
else
raise TypeError
end
これはrefinmentと組み合わせれば
obj.do_it
だけで済むし分岐のための Module#=== が呼ばれなくなるから処理速度も悪くならないはず
特に似たような処理が散乱して困るようならば検討するべき
297デフォルトの名無しさん
2017/12/11(月) 00:54:42.06ID:zjLRjNAe ruby-coreは英語だけどいいのか?
298デフォルトの名無しさん
2017/12/11(月) 01:33:14.94ID:4q7JrCp0 switch 文で、型によって分岐していたら、オブジェクト指向ではない。
多くは、設計の間違い
型が増えるたびに、switch 文を修正しないといけなくなる
修正の度に、設定ファイルを書いているデザイナーが、
プログラマーに頼まなければならなくなるから、
プロジェクトの人材配分ができなくなる
多くは、設計の間違い
型が増えるたびに、switch 文を修正しないといけなくなる
修正の度に、設定ファイルを書いているデザイナーが、
プログラマーに頼まなければならなくなるから、
プロジェクトの人材配分ができなくなる
299デフォルトの名無しさん
2017/12/11(月) 02:02:26.81ID:b197wXfn 自演うざいな
300デフォルトの名無しさん
2017/12/11(月) 03:05:20.05ID:cnSlApZQ 型はなくていいけど、宣言していない変数は使えないようなオプション欲しい
301デフォルトの名無しさん
2017/12/11(月) 03:18:06.40ID:329kYh7O ruby-listやruby-devへの案内テンプレどうしますか?
302デフォルトの名無しさん
2017/12/11(月) 12:55:19.76ID:Y2G40Toz >>301
基地外を誘導するのは迷惑だからやめなさい
基地外を誘導するのは迷惑だからやめなさい
303デフォルトの名無しさん
2017/12/11(月) 17:28:47.01ID:Iio3nuGz 自演を繰り返してる奴はruby-listやruby-devを避けてるから問題ない
そもそも入る事が出来ないらしい
それで、どういうテンプレにする?
そもそも入る事が出来ないらしい
それで、どういうテンプレにする?
304デフォルトの名無しさん
2017/12/12(火) 00:09:35.42ID:MTvcfECB ruby-devやruby-core入れるだけで荒らし避けになるとかスゲー
とりあずテンプレ案を出すのは次スレ立てる直前でどうよ?
とりあずテンプレ案を出すのは次スレ立てる直前でどうよ?
305デフォルトの名無しさん
2017/12/13(水) 02:24:54.64ID:bN1wPs8n Methodのsource_locationみたいなソースの定義や構造の解析に役立つメソッドを探しているけど、
Classやモジュール、オブジェクトにはこういったメソッドないよね?
あれば便利だと思うのに
Classやモジュール、オブジェクトにはこういったメソッドないよね?
あれば便利だと思うのに
306デフォルトの名無しさん
2017/12/13(水) 05:18:23.32ID:wC6gbn87307デフォルトの名無しさん
2017/12/14(木) 01:05:44.67ID:RXlgLxSu Methodのsource_locationは処理に直接挿入できるから便利なのであって、
そこを理解していないだろ
そこを理解していないだろ
308デフォルトの名無しさん
2017/12/15(金) 01:34:17.23ID:XFw1hYkv Rubyコードのリファクタリングに関したgemってある?
結構前にリファクタリングのrubyエディションを読んでから興味持ったんだけど
結構前にリファクタリングのrubyエディションを読んでから興味持ったんだけど
309デフォルトの名無しさん
2017/12/15(金) 07:40:23.15ID:qyzTygXP 原理的に困難って上で言われてるでしょ
こればっかりは個人の信条や宗教の問題じゃなく本当に原理的な問題だから諦めろ
Rubyのリファクタリングや型検査に関しては、無理に静的解析するんじゃなくて、
実際にモジュールをロードしてみて実行時のクラス構造を見て処理するような新しい発想が必要だと思うわ
こればっかりは個人の信条や宗教の問題じゃなく本当に原理的な問題だから諦めろ
Rubyのリファクタリングや型検査に関しては、無理に静的解析するんじゃなくて、
実際にモジュールをロードしてみて実行時のクラス構造を見て処理するような新しい発想が必要だと思うわ
310デフォルトの名無しさん
2017/12/15(金) 13:34:32.77ID:AXI+pgWQ >>309
>リファクタリング:Rubyエディション、2010
を読むまでは俺もお前と同じ勘違いをしてた
どのような言語でもテクニックとしてリファクタリングが出来るという事が書いてあるから一度読め
特にrubyは、その記述性からリファクタリングテクニックがぴったり合う
>リファクタリング:Rubyエディション、2010
を読むまでは俺もお前と同じ勘違いをしてた
どのような言語でもテクニックとしてリファクタリングが出来るという事が書いてあるから一度読め
特にrubyは、その記述性からリファクタリングテクニックがぴったり合う
311デフォルトの名無しさん
2017/12/15(金) 16:34:51.13ID:YAkY+eE5312デフォルトの名無しさん
2017/12/15(金) 22:04:52.20ID:AXI+pgWQ リファクタリングテクニックを適用するだけの事に、正しさの保障とか難癖つけても無駄
俺も以前は、カン違いしていた口だから偉そうな事は言えないけど
俺も以前は、カン違いしていた口だから偉そうな事は言えないけど
313デフォルトの名無しさん
2017/12/15(金) 23:07:30.00ID:XFw1hYkv >>309
Rubyにリファクタリングが合わないならリファクタリングrubyエディションなんて書籍は出版されないのでは?
内容も、何も考えなくても機械的に適用すればリファクタリングが出来てしまうテクニック集の例示だし
それと故意に話しを摩り替えられたけど聞きたかったのはリファクタリング関連のgemの事
Rubyにリファクタリングが合わないならリファクタリングrubyエディションなんて書籍は出版されないのでは?
内容も、何も考えなくても機械的に適用すればリファクタリングが出来てしまうテクニック集の例示だし
それと故意に話しを摩り替えられたけど聞きたかったのはリファクタリング関連のgemの事
314デフォルトの名無しさん
2017/12/16(土) 00:12:00.58ID:8dq3CMaj Rubyってどこまでできたら初心者卒業って言っていいの?
315デフォルトの名無しさん
2017/12/16(土) 01:17:58.42ID:txM0o0nR 配列とループが理解できたら
316デフォルトの名無しさん
2017/12/16(土) 01:25:30.77ID:plaGBrRo なんかできるできないの話に持っていって(持って行かれて?)
負けてるやつがいるなw
Rubyでもなんでもリファクタリングはできるよ。
ただ同じリファクタリングをしても時間がかかる言語と
そうでない言語があるって話
負けてるやつがいるなw
Rubyでもなんでもリファクタリングはできるよ。
ただ同じリファクタリングをしても時間がかかる言語と
そうでない言語があるって話
317デフォルトの名無しさん
2017/12/16(土) 01:59:08.24ID:SSRXngMG >>313
こんなにRuby信者が寄ってきてるのに何一つ出てこないことが何よりの答えだろうね
そもそもRubyってツールでコードを弄るのをダサいと考える文化があるのよ
コードを生成するくらいならメタプログラミングで実行時に何とかするべきだし、
ツールで機械的に適用できるような局所的なリファクタリングなら手でやったほうが早い、っていうのがRuby的な思考
静的言語のIDEに付いてるようなインターフェイスの抽出とかメンバのリネームといった広域的なリファクタリングは便利なものだけど、
ああいうのは実際「原理的に困難」なので
こんなにRuby信者が寄ってきてるのに何一つ出てこないことが何よりの答えだろうね
そもそもRubyってツールでコードを弄るのをダサいと考える文化があるのよ
コードを生成するくらいならメタプログラミングで実行時に何とかするべきだし、
ツールで機械的に適用できるような局所的なリファクタリングなら手でやったほうが早い、っていうのがRuby的な思考
静的言語のIDEに付いてるようなインターフェイスの抽出とかメンバのリネームといった広域的なリファクタリングは便利なものだけど、
ああいうのは実際「原理的に困難」なので
319デフォルトの名無しさん
2017/12/16(土) 14:05:47.39ID:VgVQwchc 有能なRubyistである>>318がパッと作ってgithubのURL貼ればそれで済む話だぞ
Matzもコードで語れっていつも言ってるでしょ
Matzもコードで語れっていつも言ってるでしょ
320デフォルトの名無しさん
2017/12/16(土) 22:18:04.71ID:SV1ui7/W >>319
逃げ回っていないでruby-devかruby-listで発言して来いよ
逃げ回っていないでruby-devかruby-listで発言して来いよ
321デフォルトの名無しさん
2017/12/16(土) 23:26:30.07ID:RIeUS8wT リファクタリングと言えばrubyでRipper使えばコードを構文木化して扱えるよ
だから処理系自身にrubyコードを書き換えさせる事も出来る
それからgemもparseなんちゃらみたいなのが結構出てくるから割とありきたりなネタ
知ったかで騙ってる荒らしだけが無知を披露中
だから処理系自身にrubyコードを書き換えさせる事も出来る
それからgemもparseなんちゃらみたいなのが結構出てくるから割とありきたりなネタ
知ったかで騙ってる荒らしだけが無知を披露中
322デフォルトの名無しさん
2017/12/16(土) 23:40:22.84ID:Ek1/YNvL 文脈がわかるわけじゃないからちょっと無理があるけど
323デフォルトの名無しさん
2017/12/16(土) 23:47:36.74ID:2bqvN76b またまたネガキャン大失敗の巻きか?
プゲラッチョ
プゲラッチョ
324デフォルトの名無しさん
2017/12/16(土) 23:58:10.67ID:VgVQwchc 構文木ってソースコードのDOMでしかないからなあ
>>322も言ってるけどそれでコードの意味がわかるわけじゃない
しかもRubyのASTの場合、静的解析やコード生成ではなく実行することしか考慮されてなくて、
CALLとシンボルだらけで大幅に情報が失われてる
自分でやってみりゃわかるけどかなり扱いづらい代物だよ
>>322も言ってるけどそれでコードの意味がわかるわけじゃない
しかもRubyのASTの場合、静的解析やコード生成ではなく実行することしか考慮されてなくて、
CALLとシンボルだらけで大幅に情報が失われてる
自分でやってみりゃわかるけどかなり扱いづらい代物だよ
325デフォルトの名無しさん
2017/12/16(土) 23:59:37.87ID:2deUmEBo --dump=parsetreeオプションか、--dump=insnsオプションで使わないの?
326デフォルトの名無しさん
2017/12/17(日) 00:12:46.78ID:cjnEvY5x327デフォルトの名無しさん
2017/12/17(日) 00:23:33.21ID:ZaumiUQl 使いづらいって言われてもそれは主観でしかないよな?
しかも実質、リファクタリング関連のgemを製作する側がどうのこうのであって、
gem利用者には関係なくない?
そもそも他言語での自己書き換えの扱いはもっとやっかいだぞ?
しかも実質、リファクタリング関連のgemを製作する側がどうのこうのであって、
gem利用者には関係なくない?
そもそも他言語での自己書き換えの扱いはもっとやっかいだぞ?
328326
2017/12/17(日) 00:23:43.41ID:cjnEvY5x 一応補足しとくけど、ruby処理系にそういう機能があるかどうかじゃなくて
dump=parsetreeで出力されたASTから元のソースを復元するツールを作ってみてくれ、という意味だぞ
ちなみにripperでも同じだ
もちろん細かいスペースの差異とかは無視するとしても、不可能なのがわかるよ
リファクタリングや静的解析に使うなら処理系付属のは使い物にならないので専用のASTが絶対に必要だ
dump=parsetreeで出力されたASTから元のソースを復元するツールを作ってみてくれ、という意味だぞ
ちなみにripperでも同じだ
もちろん細かいスペースの差異とかは無視するとしても、不可能なのがわかるよ
リファクタリングや静的解析に使うなら処理系付属のは使い物にならないので専用のASTが絶対に必要だ
329デフォルトの名無しさん
2017/12/17(日) 00:29:01.32ID:ZaumiUQl 構文木と並行して字句解析つかえば何も問題ないぞ
というか、そういうgemがごろごろあるぞ?
また知ったかしちゃったのかな?
というか、そういうgemがごろごろあるぞ?
また知ったかしちゃったのかな?
330デフォルトの名無しさん
2017/12/17(日) 00:34:09.11ID:cjnEvY5x >>329
意味不明だなあ
字句解析の結果をどうやってASTに紐付けるの?
結局独自に構文解析するんなら、それはつまり「専用のASTが必要」ということになるわけだけど、
自分で言ってること理解してる?
意味不明だなあ
字句解析の結果をどうやってASTに紐付けるの?
結局独自に構文解析するんなら、それはつまり「専用のASTが必要」ということになるわけだけど、
自分で言ってること理解してる?
331デフォルトの名無しさん
2017/12/17(日) 00:40:42.77ID:X5PuZ6e5 荒らしはrubyでリファクタリング出来る事が物凄く不満らしいけど、親でも殺されたのか?
これでも読んで落ち着け
つリファクタリング:Rubyエディション、2010
これでも読んで落ち着け
つリファクタリング:Rubyエディション、2010
332デフォルトの名無しさん
2017/12/17(日) 00:51:54.13ID:ZaumiUQl >>330
だからgemがごろごろあるだろ
現実に存在するgemを否定しても現実は変わらんぞ?
そもそも妄想を騙るならruby-devかruby-listで発言しろ
ここはおまえの妄想ノートじゃねよボケ
だからgemがごろごろあるだろ
現実に存在するgemを否定しても現実は変わらんぞ?
そもそも妄想を騙るならruby-devかruby-listで発言しろ
ここはおまえの妄想ノートじゃねよボケ
333デフォルトの名無しさん
2017/12/17(日) 00:52:55.58ID:Hi83U6qj リファクタリングはどの言語でもできる
ただやりにくい言語とそうでない言語が有る
Rubyはやりにくい。時間がかかる
ただやりにくい言語とそうでない言語が有る
Rubyはやりにくい。時間がかかる
334デフォルトの名無しさん
2017/12/17(日) 00:55:41.57ID:X5PuZ6e5 >>333
自演ばれてんぞ
自演ばれてんぞ
335デフォルトの名無しさん
2017/12/17(日) 00:56:47.47ID:Hi83U6qj 誰と間違ってんだよw
336デフォルトの名無しさん
2017/12/17(日) 01:01:05.21ID:ZaumiUQl いや、まちがっていない
こいつはいつもの粘着荒らしだ
こいつはいつもの粘着荒らしだ
337デフォルトの名無しさん
2017/12/17(日) 01:05:40.92ID:vwVDXOLh 俺には>>336もプロレスの自演に見えるけどね
批判的意見に毎回バカっぽく突っかかって論破されてる噛ませ役
批判的意見に毎回バカっぽく突っかかって論破されてる噛ませ役
338デフォルトの名無しさん
2017/12/17(日) 01:06:56.15ID:X5PuZ6e5 >>337
も自演か
も自演か
339sage
2017/12/17(日) 01:22:18.66ID:bfi3jyev リファクタリングって頭空っぽにして代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
なんで時間がかかるとか難しいとか話しが出てるんだ?
なんで時間がかかるとか難しいとか話しが出てるんだ?
340デフォルトの名無しさん
2017/12/17(日) 01:48:45.01ID:ZaumiUQl リファクタリングが何か知らない奴が混じってて必死でrubyのネガキャンしてるだけ
ruby-devやruby-listだとすぐ嘘がばれるから
もうこの荒らしは排除いいよ
ruby-devやruby-listだとすぐ嘘がばれるから
もうこの荒らしは排除いいよ
341デフォルトの名無しさん
2017/12/17(日) 02:32:17.52ID:Hi83U6qj >>339
> 代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> リファクタリングって頭空っぽにして代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> なんで時間がかかるとか難しいとか話しが出てるんだ?
代数的に適用するためには、十分な情報が必要だからだよ。
例えば2つの数値の掛け算の答があったとする
その答から、なんとなんの数値の掛け算かを求めるのは大変
答が複数あることもあるからだ
だけどそのうちひとつの数値がわかっていれば、答はすぐに分かる
型にも同じ話が言える。静的型付け言語の場合は、変数に型が定義されているから
そこから代数的に安全にコードを変えられるテクニックが使える
だけど型がわからなければ、そこから代数的に安全にコードを変えられるテクニックが使えない。
だから時間がかかる。一部の人はそのことを”できない"と表現しているがj。
それは違う。いくつもの可能性を検討して、これだ!と安心できるまで時間がかかるのだ。
> 代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> リファクタリングって頭空っぽにして代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> なんで時間がかかるとか難しいとか話しが出てるんだ?
代数的に適用するためには、十分な情報が必要だからだよ。
例えば2つの数値の掛け算の答があったとする
その答から、なんとなんの数値の掛け算かを求めるのは大変
答が複数あることもあるからだ
だけどそのうちひとつの数値がわかっていれば、答はすぐに分かる
型にも同じ話が言える。静的型付け言語の場合は、変数に型が定義されているから
そこから代数的に安全にコードを変えられるテクニックが使える
だけど型がわからなければ、そこから代数的に安全にコードを変えられるテクニックが使えない。
だから時間がかかる。一部の人はそのことを”できない"と表現しているがj。
それは違う。いくつもの可能性を検討して、これだ!と安心できるまで時間がかかるのだ。
342デフォルトの名無しさん
2017/12/17(日) 02:47:32.03ID:BeMxy3i4 また自演の長文か
そんなに主張したい事があるなら初心者スレじゃなくruby-devかruby-listで言え
わざわざ初心者スレで嘘をばらまく必要は無いだろう
そんなに主張したい事があるなら初心者スレじゃなくruby-devかruby-listで言え
わざわざ初心者スレで嘘をばらまく必要は無いだろう
343デフォルトの名無しさん
2017/12/17(日) 03:00:08.85ID:X5PuZ6e5 リファクタリングにちなんで、
みんなはコードに自己書き換えの処理させる時って何を使ってる?
みんなはコードに自己書き換えの処理させる時って何を使ってる?
344デフォルトの名無しさん
2017/12/17(日) 03:28:07.16ID:BeMxy3i4 初心者スレでイキってる荒らしはこういう質問が来ると急に大人しくなるんだよな
俺は普通にdefine_methodを使うぐらいしかしていない
俺は普通にdefine_methodを使うぐらいしかしていない
345デフォルトの名無しさん
2017/12/17(日) 03:36:34.62ID:Hi83U6qj 急におとなしくなるって、いま夜中の3時半やで?
346デフォルトの名無しさん
2017/12/17(日) 03:47:09.35ID:X5PuZ6e5 質問に答えられないのはわかった
347デフォルトの名無しさん
2017/12/17(日) 03:48:56.09ID:Hi83U6qj348デフォルトの名無しさん
2017/12/17(日) 03:54:31.53ID:X5PuZ6e5 >>347
お前に言ってるんだが
お前に言ってるんだが
349デフォルトの名無しさん
2017/12/17(日) 03:58:35.63ID:Hi83U6qj350デフォルトの名無しさん
2017/12/17(日) 04:02:09.36ID:vi6El7FV ソースを直で修正し再ロードして実行までをrubyコード内で記述できるわけだから、
言ってしまえばなんだって出来る
gemでparse2rubyとか色々あるし
言ってしまえばなんだって出来る
gemでparse2rubyとか色々あるし
351デフォルトの名無しさん
2017/12/17(日) 04:18:39.08ID:X5PuZ6e5352デフォルトの名無しさん
2017/12/17(日) 04:48:50.54ID:PRNmBS9S353デフォルトの名無しさん
2017/12/17(日) 08:13:32.84ID:6NwF6CYy 「ruby-devかruby-listで発言しろ」って言いまくってる奴は単発IDでの自演常習犯だから絡まないでスルーしましょう
>>252でも説明したけど自治の振りをした粘着荒らしです
>>252でも説明したけど自治の振りをした粘着荒らしです
354デフォルトの名無しさん
2017/12/17(日) 09:16:34.42ID:X5PuZ6e5 自演を繰り返す荒らしがスレ住民全員を荒らし認定か
ruby-devかruby-listで発言するのがそれほど怖いのかな?
ruby-devかruby-listで発言するのがそれほど怖いのかな?
355デフォルトの名無しさん
2017/12/17(日) 11:53:12.66ID:Hi83U6qj 妨害って何? Rubyの話ししてるでしょ
>>341へのレスしてくれるのを待ってるんだが?
>>341へのレスしてくれるのを待ってるんだが?
356デフォルトの名無しさん
2017/12/17(日) 11:54:17.21ID:Hi83U6qj357デフォルトの名無しさん
2017/12/17(日) 12:02:37.42ID:X5PuZ6e5 スレッドの進行を妨害して荒らすな
358デフォルトの名無しさん
2017/12/17(日) 13:07:26.56ID:7FFT55NR ちょいと質問です。
Cだと"__"から始まったり、"_"+大文字となったりする識別子は予約扱いだと明文化されてるけど、Rubyはどうなのかちょっと気になってます。
組み込みで__FILE__ __LINE__ __method__とかが定義されているのは知ってます。
gemライブラリの中で2つのアンダースコート"__"から始まり、同じく"__"で終わるメソッド名を定義しようかと考えてるけど、問題ないかなと思って。
Cだと"__"から始まったり、"_"+大文字となったりする識別子は予約扱いだと明文化されてるけど、Rubyはどうなのかちょっと気になってます。
組み込みで__FILE__ __LINE__ __method__とかが定義されているのは知ってます。
gemライブラリの中で2つのアンダースコート"__"から始まり、同じく"__"で終わるメソッド名を定義しようかと考えてるけど、問題ないかなと思って。
359デフォルトの名無しさん
2017/12/17(日) 13:28:17.09ID:Hi83U6qj @で始まる変数はインスタンス変数
@@で始まればクラス変数
$で始まれば組み込み変数
大文字で始まれば定数
selfもnilもtrueもfalseも変数
@@で始まればクラス変数
$で始まれば組み込み変数
大文字で始まれば定数
selfもnilもtrueもfalseも変数
360デフォルトの名無しさん
2017/12/17(日) 13:31:03.53ID:X5PuZ6e5 リファレンスで擬似変数の所を見てかぶりそうなのをさければ問題ない
かぶっても見分けられるなら問題ない
かぶっても見分けられるなら問題ない
361デフォルトの名無しさん
2017/12/17(日) 13:36:18.37ID:CQTxJs7f Ripper.sexpつかえばソースの自己書き換えできるだろ
誰だよ出来合ないって言ったのは
誰だよ出来合ないって言ったのは
362デフォルトの名無しさん
2017/12/17(日) 13:41:01.76ID:Hi83U6qj 誰も言ってないよ?w
363デフォルトの名無しさん
2017/12/17(日) 14:16:42.77ID:CQTxJs7f require "ripper"
require "pp"
pp Ripper.sexp("class Foo p self end")
#[:program,
# [[:class,
# [:const_ref, [:@const, "Foo", [1, 6]]],
# nil,
# [:bodystmt,
# [[:command,
# [:@ident, "p", [1, 10]],
# [:args_add_block, [[:var_ref, [:@kw, "self", [1, 12]]]], false]]],
# nil,
# nil,
# nil]]]]
これでリファクタリングが難しいとか時間がかかるとか言ってた奴もいたな
require "pp"
pp Ripper.sexp("class Foo p self end")
#[:program,
# [[:class,
# [:const_ref, [:@const, "Foo", [1, 6]]],
# nil,
# [:bodystmt,
# [[:command,
# [:@ident, "p", [1, 10]],
# [:args_add_block, [[:var_ref, [:@kw, "self", [1, 12]]]], false]]],
# nil,
# nil,
# nil]]]]
これでリファクタリングが難しいとか時間がかかるとか言ってた奴もいたな
364デフォルトの名無しさん
2017/12/17(日) 14:21:37.40ID:Hi83U6qj >>363
読む時間も含めれば、時間かかるんじゃないの?
読む時間も含めれば、時間かかるんじゃないの?
365デフォルトの名無しさん
2017/12/17(日) 14:32:48.20ID:CQTxJs7f どんだけ遅いCPU積んでるの?
366デフォルトの名無しさん
2017/12/17(日) 14:42:49.46ID:Hi83U6qj >>365
何を言ってるの?
リファクタリングっていうのは人が
どうすべきかを考えるんだよ
今何が問題で、どうすべきかを考えるためには
ソースコードを読んで理解しなければならない。
その理解するまでの時間の話なんだけど
で、そのコードをどうしたいのか俺には分からん
まずそこからだよね。君が説明するべきことは
何を言ってるの?
リファクタリングっていうのは人が
どうすべきかを考えるんだよ
今何が問題で、どうすべきかを考えるためには
ソースコードを読んで理解しなければならない。
その理解するまでの時間の話なんだけど
で、そのコードをどうしたいのか俺には分からん
まずそこからだよね。君が説明するべきことは
367デフォルトの名無しさん
2017/12/17(日) 15:09:58.55ID:CQTxJs7f メソッド抽出、インライン化、メソッドシグニチャの変更と、
IDEにある主なリファクタリング機能なんだが
これをrubyには出来ないと言ってた奴が居るらしい
IDEにある主なリファクタリング機能なんだが
これをrubyには出来ないと言ってた奴が居るらしい
368デフォルトの名無しさん
2017/12/17(日) 15:28:24.67ID:7FFT55NR369デフォルトの名無しさん
2017/12/17(日) 15:45:11.24ID:X5PuZ6e5 Kernelモジュールに__で始まるメソッドがあるからそれにも気をつけろ
わからないことがあったら一度自分でリファレンスを検索して細部までしっかり見ろ
わからないことがあったら一度自分でリファレンスを検索して細部までしっかり見ろ
370デフォルトの名無しさん
2017/12/17(日) 15:51:07.46ID:F+iLZcQ1 >>367
メソッド抽出はできるけどインライン化やシグニチャの変更は安全には行えないよ
実際にどのメソッドが呼ばれるかは実行してみるまで分かんないし、メタプログラミングでメソッドが存在しない場合すら珍しくない
メソッド抽出はできるけどインライン化やシグニチャの変更は安全には行えないよ
実際にどのメソッドが呼ばれるかは実行してみるまで分かんないし、メタプログラミングでメソッドが存在しない場合すら珍しくない
371デフォルトの名無しさん
2017/12/17(日) 16:13:40.93ID:X5PuZ6e5 シグニチャの変更は、Ripper.sexpからの配列をまわして旧シグニチャを指定のに書き換えてソースに戻せば良いように見える
そもそもrubymineで出来る
インライン化なんて普通に:assign部分を使われてるところで展開すればいいだけだからシグニチャの変更より楽そう
逆に変数の切り出しも出来るだろこれ
ちょっとコードを書いてみるか
そもそもrubymineで出来る
インライン化なんて普通に:assign部分を使われてるところで展開すればいいだけだからシグニチャの変更より楽そう
逆に変数の切り出しも出来るだろこれ
ちょっとコードを書いてみるか
372デフォルトの名無しさん
2017/12/17(日) 16:34:07.16ID:DhuU3UWX ElectronみたいにWebベースでGUIを作ってRubyで動的処理を行うフレームワークとかないんかな
ActiveScriptRubyは近いけどWin/IE限定の上にRScriptをインストールする必要があるのがイマイチ
インストール不要で軽量・軽快なのが欲しい
ActiveScriptRubyは近いけどWin/IE限定の上にRScriptをインストールする必要があるのがイマイチ
インストール不要で軽量・軽快なのが欲しい
373デフォルトの名無しさん
2017/12/17(日) 17:06:02.35ID:F+iLZcQ1374デフォルトの名無しさん
2017/12/17(日) 19:08:51.91ID:Hi83U6qj 結局Rubyでは候補を出すところまでしかできないんだよね
代数的に適用することができない
その変更が正しいかどうかをコード全体を読んで
考えないといけないから、時間がかかってしまう
代数的に適用することができない
その変更が正しいかどうかをコード全体を読んで
考えないといけないから、時間がかかってしまう
375デフォルトの名無しさん
2017/12/17(日) 19:09:35.99ID:Hi83U6qj376デフォルトの名無しさん
2017/12/17(日) 22:52:07.76ID:X5PuZ6e5 荒らすな
377デフォルトの名無しさん
2017/12/18(月) 02:29:22.24ID:YRbzAMDV ID:Hi83U6qjのレスは矛盾だらけだな
最近の荒らしはこんなに程度が低いの?
最近の荒らしはこんなに程度が低いの?
378デフォルトの名無しさん
2017/12/18(月) 06:38:14.70ID:SUjpjhtq じゃあその矛盾がどれかを指摘しましょう
379デフォルトの名無しさん
2017/12/18(月) 06:48:05.27ID:D7KhQLFT アンチが出たならアンチスレへ誘導をしろ
そのためのアンチスレなんだから
>>378
Rubyについて(アンチ専用) Part004
https://mevius.5ch.net/test/read.cgi/tech/1249737531/
ほら、アンチスレがあるんだからもう来るなよ
そこなら好きなだけネガキャンしても嘘ついても誰も文句を言わないから
そのためのアンチスレなんだから
>>378
Rubyについて(アンチ専用) Part004
https://mevius.5ch.net/test/read.cgi/tech/1249737531/
ほら、アンチスレがあるんだからもう来るなよ
そこなら好きなだけネガキャンしても嘘ついても誰も文句を言わないから
380デフォルトの名無しさん
2017/12/18(月) 07:53:27.68ID:SUjpjhtq 矛盾の指摘まだ?
381デフォルトの名無しさん
2017/12/18(月) 07:53:50.72ID:SUjpjhtq 喧嘩ふっかけといてアンチスレに逃げるわけないよね?w
382デフォルトの名無しさん
2017/12/18(月) 08:25:44.94ID:9Kb0ajxH 2ch学習法(今なら5chか)って言われてたやつが通じると思ってるんだろうけどな。
383デフォルトの名無しさん
2017/12/18(月) 12:55:26.65ID:L2o9nXM3 初心者スレはスレ消費激しいけどアンチスレはぜんぜん流行ってないな
アンチ死んでる?
アンチ死んでる?
384デフォルトの名無しさん
2017/12/18(月) 14:28:08.01ID:jKkrC/n/ pythonが流行ってるからなあ。本もpythonばっかり
385デフォルトの名無しさん
2017/12/18(月) 15:10:45.19ID:aXpCltYZ アンチは寂しくて初心者スレに来ちゃうわけか
386デフォルトの名無しさん
2017/12/18(月) 15:26:16.95ID:XEro/kye >>371を参考にしたらリファクタリング機能を組めた
ソース読み込んでS式書き換えてソースに書き戻すって処理だけど俺でも簡単に出来るんだな
ソース読み込んでS式書き換えてソースに書き戻すって処理だけど俺でも簡単に出来るんだな
387デフォルトの名無しさん
2017/12/18(月) 15:56:52.19ID:e/V/7Ip9 selfがどこのどいつなのかが問題なんだがな
388デフォルトの名無しさん
2017/12/18(月) 16:10:14.00ID:zBhLgaSa こっちでは問題にすらなってない
俺ですら出来るレベルだけど、それでも無理ならVMにバイトコード見せてもらったら?
俺ですら出来るレベルだけど、それでも無理ならVMにバイトコード見せてもらったら?
389デフォルトの名無しさん
2017/12/18(月) 16:25:37.10ID:4mfkLjZ7■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★4 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す [蚤の市★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 佳子さまがコロナ感染 [おっさん友の会★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【悲報】靖国参拝を批判する中国に内政干渉するなと騒ぐネトウヨが中国の内紛に干渉する理由、誰にもわからない🥺 [616817505]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【悲報】ネトウヨ「なんで高市が謝るんだよ!岡田が謝れ!😡」 [359965264]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- エッヂ逝った?
