[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/23 09:39 / Filesize : 287 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 62



1 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 00:35:29.31 ID:rLZHdQ3Q.net]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

るりまサーチ (リファレンス検索)
rurema.clear-code.com/

Rubyist Magazine - るびま
jp.rubyist.net/magazine/

逆引きRuby
www.namaraii.com/rubytips/

458 名前:デフォルトの名無しさん [2017/12/19(火) 01:43:46.18 ID:cabpZd/N.net]
ではもう一度聞こう
今後は反省して間違ったことを言わない、という意思はあるのかな?

459 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 01:45:58.37 ID:si5W7uAD.net]
じゃまなので透明あぼーんした

460 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 01:50:12.56 ID:7ZIeceXv.net]
そんなことよりJOI2017/2018の話しようぜ

461 名前:デフォルトの名無しさん [2017/12/19(火) 01:54:22.14 ID:RoMU0mit.net]
アンチスレに帰れよアンチ

462 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 02:06:16.03 ID:cabpZd/N.net]
Rubyについて知らない事を知ったふりして話してたわけか
道理で

463 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 03:08:47.58 ID:GcPOv6XA.net]
Ripper.sexp_rawからRipper.sexpに戻すと:stmts_add等が削られて微妙にやりにくい
全部rawの方でいい気がするがRipper.sexpってどういう時に使うんだ?

464 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 04:03:20.54 ID:UdKVtF6e.net]
あれてんなw
型の次は、リファクタリングかよ

初心者の内容か?

俺の場合GoFなんかで書き直したい病が持病です。
んでrspec漏れてしょうもないバグおこす。
ほどほどに持病と付き合おうw

465 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 04:45:08.67 ID:cabpZd/N.net]
>>450
pで見る用に使ってる
Ripper.sexp_rawはppで見ても長いから

466 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 05:28:28.56 ID:GcPOv6XA.net]
やっぱり表示用なんだ

それから出力された配列の操作なんだけど、
配列の中ごろ特定の要素を基に「上の配列に○○が在りかつ後ろの要素に△△があったら××」、
みたいな同定の仕方をしてるんだけど問題ある?



467 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 06:21:37.16 ID:a07C5OyP.net]
配列の操作ってそんなもんだろ

468 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 07:00:22.12 ID:ykexPK2V.net]
リファクタリングで香ばしい展開になっててわろた

オレがおっさんになったのが、たまたま住人がアホなのか、2ch民全体のレベルが下がったのか

469 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 07:28:41.13 ID:ZuB1zFT8.net]
>>455
自治厨の振りした基地外が一人で自演しまくって荒らしてるだけだから無視な
荒らしの狼藉は>>252参照

470 名前:デフォルトの名無しさん [2017/12/19(火) 07:38:28.19 ID:yvsoeKM9.net]
>>455
Rubyはとっつきやすい分、ニワカとか、簡単だと思って挫折した勘違い君も多いからな。

471 名前:> リファクタリングにしても、用語の定義とか目的知らずに書いてるなあ、ってのばかり。
きちんと理解しようと思ったら、ガウディ本(CTMCP)で計算モデルを理解するのがお勧め。
あと「リファクタリング:Rubyエディション」とかで、以下を把握できる。
・リファクタリングはプログラム改善に使われることが多い。
・数多ある改善基準のうち、リファクタリングは何を対象にしているのか?
・改善手法は、計算モデルと、改善の目的により様々。
[]
[ここ壊れてます]

472 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 10:23:42.83 ID:si5W7uAD.net]
>>457
なんかリファクタリングを理解してないようにみえる。

リファクタリングと計算モデルがどうつながるのか説明してみ
その後、あんたの意見と同等の話をしているサイトを言ってみ

リファクタリングと計算モデルは
ほとんどつながりがないことがわかるからさ

473 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 12:22:26.77 ID:B3Kk66cH.net]
結局、荒らしはアンチスレに帰らんかったのか
そりゃアンチスレも落ちぶれるわ

474 名前:デフォルトの名無しさん [2017/12/19(火) 22:13:01.86 ID:5rvtlxA7.net]
>>428
>Rubyでリファクタリングは静的言語よりも
>大変だって話をしてる

いいや、している話は:
  「動的型付け言語は静的型付け言語よりも大変だ」
だよ
その主張は(個人的には)認めるけど、それだけでRubyスレに
粘着するのは荒らし行為そのものではないかな?
  hissi.org/read.php/tech/20171219/c2k1Vzd1QUQ.html

それだけ「動的型付け言語におけるリファクタリング」に関心があるなら、
>>107 で紹介した専用スレへ移動すべきだよ

475 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 00:18:03.50 ID:n7Ixbq8J.net]
>>460
俺はそんなことは言ってないので他人の意見だね
Rubyが大変なのはソースコードを読むときだよ。書くときは比較的楽。
楽の意味がわからないなら、タイプ数が少ないと言い換えても良い

Rubyは書くときは楽で、読むときは大変
静的型付け言語はその逆

理由はまんまだが型という情報が書いてあるから。
情報を多く書かなければいけない静的型付け言語は大変で
でも情報が多く有るから静的型付け言語はわかりやすい

ただし前提として複数のモジュール(クラス等)から成り立ってる場合と
言ったほうが良いかもな。ローカル変数なんかは型が書いて無くても
すぐ近くにコードがあって該当の関数しか見なくていいから型がなくても大丈夫

一番の問題は複数モジュールから成り立っていて、特に別ファイルに分かれている場合
こういうのはドキュメントとして型情報を書いておかないと、わけわからなくなる
だけどドキュメントとして型情報書くなら、タイプ数は静的型付け言語より多くなってしまうので本末転倒


Rubyは書くときは楽(ドキュメントを書かないという前提)で、読むときは大変
ドキュメントを書くなら、それはソースコードに一元化した方がいいよって話になる

476 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 00:50:26.05 ID:gjXzJsOL.net]
中身スカスカの長文なんてよく書き込めるな
頭の中もスカスカしてそう



477 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 00:55:47.63 ID:4hmeAMNm.net]
>>462
そのレスは何が言いたいのだ?
そのレスの中身を教えてくれw

478 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 02:10:20.76 ID:wlycKVFQ.net]
rubyの可読性のよさには感動する

DSLとかすごい

たまーにendだらけになるのは難点w

479 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 02:23:39.76 ID:Jv20jxkb.net]
動的にリファクタリングさせるコード書いてるけど、
書けないやつはrubymine使えば良くね?

480 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 02:51:18.20 ID:s+zCj7ov.net]
配列の操作そのものが難しいと勘違いしてるんじゃないか?
配列の操作に使うコードって大概は下みたいに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

481 名前:デフォルトの名無しさん [2017/12/20(水) 05:23:54.83 ID:Jv20jxkb.net]
配列が苦手とか言われても
パーサから順にイベントを渡されて処理するより明らかに難易度低いだろ

482 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 06:54:28.40 ID:6Esz8d8C.net]
今のところ、リファクタリングについて誰ひとり説明できてないぞ?
もっとシンプルに表現できるだろw

483 名前:デフォルトの名無しさん [2017/12/20(水) 08:05:26.87 ID:DZ3d9p1Y.net]
>>468
というお前さんも説明出来ない訳だが。

484 名前:デフォルトの名無しさん [2017/12/20(水) 08:07:18.11 ID:DZ3d9p1Y.net]
>>458
数十レスも書いといて「リファクタリングとはこういうものだ」とすら書けない奴が何か言ってる。

485 名前:デフォルトの名無しさん [2017/12/20(水) 08:45:35.24 ID:Za3FAu+s.net]
おい無職
自演はやめとけ

486 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 14:31:38.22 ID:Za3FAu+s.net]
毎朝7時8時から書き込める荒らしは何の仕事してるんや?



487 名前:デフォルトの名無しさん [2017/12/20(水) 18:57:50.54 ID:2lbW5JOk.net]
RubyVM::InstructionSequence.compile("class Hoge end").eval
のコードを実行したら直後に
p Hoge.new
って問題無く書けるのか
コンテクストが別々だと勘違いしてた

488 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 22:34:07.59 ID:4hmeAMNm.net]
>>470
リファクタリングを理解してませんと認めたってことでOKだね

489 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 22:35:24.96 ID:4hmeAMNm.net]
>>472
俺は出勤が9時だからだよw
会社まで30分

490 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 22:48:45.50 ID:4hmeAMNm.net]
>>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>'

お前がそれじゃ、配列は難しいという結論にしかならんぞ

491 名前:デフォルトの名無しさん mailto:sage [2017/12/ ]
[ここ壊れてます]

492 名前:20(水) 22:56:44.83 ID:4hmeAMNm.net mailto: >>468
> 今のところ、リファクタリングについて誰ひとり説明できてないぞ?
> もっとシンプルに表現できるだろw

ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること


補足を追加するならば、
振る舞いを保てていればいいので、アルゴリズムを変えてもOK
というか、無駄があったりしてわかりにくいアルゴリズムを
理解や修正が簡単になるように書き換えることもリファクタリングの一つ

何が言いたいかというと、リファクタリングはパースした結果が
一致するように書き換えることではないということ
パースできたからといって、リファクタリングができたことにはならない
[]
[ここ壊れてます]

493 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 23:30:14.73 ID:nhQOfr/3.net]
2.5まで後5日

494 名前:デフォルトの名無しさん [2017/12/21(木) 01:18:36.01 ID:l5/5gdQz.net]
>>477
アンチスレへ帰れ
おまえが働いていないのはわかったから

495 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 01:42:59.97 ID:prpojwIY.net]
>>479
いい加減学習しよう

422 自分:デフォルトの名無しさん[sage] 投稿日:2017/12/19(火) 01:06:10.31 ID:si5W7uAD [10/23]
はっきり言わないと理解できないのかな?
俺はアンチスレには行きません
何度言われてもね

496 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 02:12:25.62 ID:IcTBGDe8.net]
自演ばれてんぞ



497 名前:デフォルトの名無しさん [2017/12/21(木) 02:49:55.63 ID:l5/5gdQz.net]
>>480
初心者を騙していないではやくアンチスレへ帰れ
デマばかり垂れ流しやがって

498 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 03:03:06.96 ID:h5j2wgPh.net]
例えば、構造やサイズが変わる多次元配列の要素を辿って行く必要がある場合、
添え字だけ集めて一括指定で辿れる様にするのって普通?

499 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 11:43:09.31 ID:XGDp/jet.net]
>>477
はい。正解

500 名前:デフォルトの名無しさん [2017/12/21(木) 12:10:12.13 ID:ow9tew52.net]
>>477
>ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること

オブジェクト指向知らないやつがググってコピペか・・・つまらん。

501 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 13:37:15.11 ID:K/addjJ3.net]
>>483
def pickup(a,b,c,d)
a[b][c][d]
end
みたいな?
あ、これじゃ次元数が固定だからダメなのか

502 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 14:41:34.48 ID:nqxJQXq0.net]
Array#dig

503 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 18:29:48.77 ID:ztrEyuDD.net]
文字列に対して
・0〜9の一桁の数であれば頭に0を付け足す(例:00,01
・10以降はそのまま
という処理を行いたいんですが、正規表現でスパッとかけたりするんでしょうか
イメージとしては
text = "9"なら09
text = "10"なら10
として出力(print)がしたいです
gsubで置換できないか試しているのですがうまいこといかず・・・
アドバイス頂けますと幸いです

504 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 18:34:23.75 ID:2OtOKx8R.net]
正規表現よりも sprintfフォーマットを使おう
puts "%02d, %02d,%02d,%02d" % [1,5,10, 100]
#=> 01, 05,10,100

505 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 18:34:49.31 ID:ZdPTZj/x.net]
sprintf "%02d" % 9
sprintf "%02d" % 10

506 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 18:51:00.27 ID:2OtOKx8R.net]
ちなみにあえてgsubでやるなら
'1'.gsub(/^(?=\d$)/, '0') #=> "01"
'42'.gsub(/^(?=\d$)/, '0') #=> "42"



507 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 18:51:08.76 ID:8yE94KQ4.net]
%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"

508 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 19:24:42.40 ID:gRGJJy1x.net]
ありがとうございます!sprintf、こういう風に使えるのですか。便利ですね・・・
正規表現での場合も教えていただきありがとうございました
勉強になりましたm(_ _)m

509 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 19:26:00.72 ID:gRGJJy1x.net]
>>493
すみません、ID変わってますが>>488です

510 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 19:32:53.88 ID:aIK1VRoC.net]
正規表現は後で泣くからなるべく使わないほうがいい。
もし使うのなら
複雑のは避けて
シンプル+シンプルと組み合わせて使うといい。

511 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 20:20:34.35 ID:prpojwIY.net]
おい >>466
配列操作簡単なんだろう?
バグ修正はまだか?

512 名前:デフォルトの名無しさん [2017/12/21(木) 22:24:14.24 ID:OUKJWky+.net]
>>461
>俺はそんなことは言ってないので他人の意見だね

いいや、もろに言ってるよ
君のレスに含まれるRubyという単語を改変してみた:

  >動的型付け言語が大変なのはソースコードを読むときだよ。書くときは比較的楽。
  >楽の意味がわからないなら、タイプ数が少ないと言い換えても良い
   :
  >理由はまんまだが型という情報が書いてあるから。
  >情報を多く書かなければいけない静的型付け言語は大変で
  >でも情報が多く有るから静的型付け言語はわかりやすい

なんら違和感もないだろう?あいも変わらずごく当たり前な一般論を語っているだけ

さあ、Rubyに限定されない「動的型付け言語におけるリファクタリング」を
語りたいのなら、このスレに粘着せず、>>107で紹介した専用スレへ移動しなさい

513 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 22:29:08.65 ID:prpojwIY.net]
>>497
改変しておいて、俺が言ってるとか意味不明
改変しなければ、言ってないってことじゃないか

514 名前:デフォルトの名無しさん [2017/12/22(金) 10:53:32.70 ID:zY/Ujd0Y.net]
496から498までの自演を見てると小学生の演劇見せられてる気分になる

って事で晒しage

515 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 15:56:43.92 ID:o0zFMz04.net]
>>497
>>461 はたぶんちょっと勘違いしてる。

単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
リファクタリングが楽だと思ってるんじゃないかな

リファクタリングの考え方は言語は関係ないよ

516 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 15:57:53.00 ID:o0zFMz04.net]
つか、Ruby関係ないかw



517 名前:デフォルトの名無しさん [2017/12/22(金) 16:08:37.20 ID:OF22/s+V.net]
ruby2.5は何が来るかな

518 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 17:59:37.34 ID:2CqGXpCv.net]
これでTypeScriptやPython方式の型ヒンティングが来たらコミュニティが大荒れするだろうな

519 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 18:04:00.26 ID:hLTr5w9I.net]
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

520 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 18:20:37.57 ID:bOdX3AhV.net]





521 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:24:19.52 ID:6yk8gXaG.net]
>>500
> 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
> リファクタリングが楽だと思ってるんじゃないかな

違うよ。静的型付け言語の場合が簡単なのは、
ソースコード上に型が書いてあるからだよ
コンパイルエラーは関係ない

例えば

class Klass {

522 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:28:48.59 ID:6yk8gXaG.net]
(間違って途中で送信した)

例えば

class Klass {
  function foo() { }
}

みたいなクラスがあって、
fooをbarに書き換える時

↓ このように型が書いてあれば、ここのfooもbarに
書き換えなきゃいけないとわかる

function f(Klass k) {
 k.foo();
}


↓ でもこの場合は、書き換えれば良いのかわからない

function f(k) {
 k.foo();
}

ソースコード全体から、fを呼び出している所をすべて探して
引数にKlassクラス(もしくはそれを継承したクラス)を
渡していることを確認しなければいけない

523 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:38:46.01 ID:6yk8gXaG.net]
今回は一番簡単な例としてメソッド名の変更を例にしたが
例えば、メソッドの引数の数が変わったときも
型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる
メソッドが消えたこともわかる
クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね

シグネチャの変更に関わる部分は、静的型付け言語の場合は
すごく簡単に変更すべき場所を特定できる

524 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:40:18.92 ID:6yk8gXaG.net]
ここにリファクタリングの種類が書いてあるが、大部分は
シグネチャ(クラスやメソッドの名前や引数の変更)を伴うものだよ
https://so-zou.jp/software/tech/programming/tech/refactoring/

525 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:42:20.33 ID:2CqGXpCv.net]
Rubyの静的解析の難しさに関して言えば、単にソースに型が書いてないというだけではないんだよなあ
Rubyって、静的なクラス定義というのがそもそも存在しないんだよ
動かしてみて、RubyのVMのメモリ上に結果としてクラスオブジェクトができて、そこではじめてクラスが定義されたことになるの
この式のクラスは何か?とか考える以前に、クラスなんてものは動かしてみるまで無いの

526 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:48:13.59 ID:6yk8gXaG.net]
そう。それもあるね。

動くか、動いてないかの二択じゃないか?って
思うかもしれないがぜんぜん違う。

動いてない状態というのは一つしかないが、
動いている状態というのは無限に近い数ある
「0」と「0以上」の違いと同じ

動いてないという一つの状態なら、全部を調べることも可能だが、
動いているという無限にある状態は、調べ上げることは不可能



527 名前:デフォルトの名無しさん [2017/12/22(金) 22:04:35.06 ID:5nY8hqH+.net]
>>498
Rubyの箇所をJavaScriptやPythonといった他の動的型付け言語へ
改変しても当てはまる事柄しか語っていないと指摘しているんだよ
以下 >>506-509 まで、Rubyには限定されないありふれた一般論が続く


>>501
つまり、そうゆうこと


>>511
>Rubyって、静的なクラス定義というのがそもそも存在しないんだよ

これも「動的型付け言語って、静的なクラス定義というのがそもそも存在しない」という話だね
Rubyに限らずJavaScriptやPythonといった他の動的型付け言語であれば、
「クラスなんてものは動かしてみるまで無い」のが動的型付けの原理だよ

528 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:17:37.91 ID:6yk8gXaG.net]
「クラスなんてものは動かしてみるまで無い」かもしれないが、
「仕様(やりたいこと)は動かしてみなくてもある」

ソースコードは動かさなくても「そのクラスは○○であること」
(○○にはメソッドが有ることとかはいります)を前提に
書いてあるというのに「動かしてみるまで無い」ことに意味があるのだろうか

529 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:21:48.38 ID:2CqGXpCv.net]
>>513がRailsを触ったことがないのはわかった

530 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:25:46.71 ID:6yk8gXaG.net]
>>514
反論して良いんだよ?
Railsがなんだって?

普通はデータベースにそのフィールドが
有るという前提でコード書くよね?

531 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:27:24.55 ID:2CqGXpCv.net]
>>515
それをどうやって実行前に認識するの?
DBのスキーマをクエリして調べるのか?w

532 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:32:17.34 ID:6yk8gXaG.net]
>>516
DBのスキーマを実行時に変えたりすることなんてまず無いだろ
実行前にスキーマは決まってる。
ならクラスも実行前に生成することは可能なわけだが?

Railsが実行後に決めているからと言って、実行時に決まることにはならない
スキーマは実行前に決まっているし、今話してるソースコードだって
そのフィールドが存在するという前提のソースコードを書いてるだろ
動的に生成してるその情報は、本当は実行前に決まってるんやで?

533 名前:516 mailto:sage [2017/12/22(金) 22:43:01.67 ID:2CqGXpCv.net]
可能かどうかとやるかどうかは別問題だろう
それRuby3の型検査の仕様として提案してみろ、このスレどころではなく罵倒と嘲笑の的だぞ

534 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:44:49.43 ID:6yk8gXaG.net]
>>518
これのどこが型検査の仕様なんだ?
そりゃ馬鹿にされるだろうな
型検査の仕様だと言ったお前が

535 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:49:53.16 ID:6yk8gXaG.net]
動的言語といっても本当に動的に決まることはほとんどなく
静的に決まってる情報を元に動的に作ってるだけなんだよな。

だから実行するたびに毎回同じものが作られる。
毎回同じものを作るなら、キャッシュするかのように
最初から作っておけば良いわけさ

536 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:50:08.15 ID:2CqGXpCv.net]
>>519
DBスキーマまで考慮したメタプログラミング対応の静的解析ツールを作るってこと?
実用的なものができると本気で思うなら作ればいいんじゃね?
みんな喜ぶし、そんな実績があればそれこそMRIの主要メンバーとしてRuby3の仕様決定を主導できるぞ
頑張れよ



537 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 23:01:34.92 ID:6yk8gXaG.net]
>>521
だから動的言語の仕様じゃ無理だって話してるじゃんw

ソースコードにクラスという型を書いてあるから多くのリファクタリングが簡単に出来るようになる
静的に決まってるならソースコードに静的に書けるわけで、
静的に書いておけば、リファクタリングが簡単に早くできるって話をしてる

538 名前:デフォルトの名無しさん [2017/12/22(金) 23:36:34.81 ID:5nY8hqH+.net]
>>522
だからそれはRubyだけでなくJavaScriptやPythonを含む
大半の「動的型付け言語じゃ無理だ」っていう当たり前の話だろ?

539 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 00:24:15.46 ID:eRzaIxhX.net]
動的メソッドは?(初心者並感)

540 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 07:12:36.09 ID:SJqo2RLv.net]
>>522のその論理はもういいよw
食いたくないのに食わされてお腹いっぱいっすわ

541 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 07:28:35.18 ID:SJqo2RLv.net]
リファクタリングはシンプルにしていくのが目的なのに、話を小難しく複雑にしたいのはなぜだ
>>512 とか。

動的言語うんぬんゆってるやつから不吉な匂いがする

542 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:11:10.96 ID:f0qvO5Sa.net]
>>526
リファクタリングは、シンプルにしていくのが目的
だから、話を小難しく複雑したくない?

シンプルにしたいのはリファクタリングであって
「話」の話は関係ないよ

543 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:11:40.67 ID:f0qvO5Sa.net]
>>525
食いたくないなら見るな

544 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:13:50.17 ID:AknL/7GP.net]
このスレはいっつも議論してんなぁ
みんな日中は何してる人なの?

545 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:18:01.60 ID:f0qvO5Sa.net]
普通に仕事してるよ。
だから平日の日中は書き込めない

546 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:58:49.51 ID:YmDQ4aAw.net]
Rspecで下みたいな書き方ってあり?
それとも避けられる?

# def f n
# n + n
# end

context 'fの引数が0から255のとき' do
??256.times do |i|
????it { expect( f(i) ).to eq (2 * i) }
??end
end



547 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:05:45.83 ID:QLWK33W3.net]
>>531
テストの一般論で言えばダメ
それ結局同じことを実装とテスト両方に書いてるだけで、テストとして意味をなしてない
テストは入出力ともどんな低脳か見ても間違えようのない具体的な値を書くのが鉄則

548 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:10:32.49 ID:YmDQ4aAw.net]
>>532
じゃあもし0から255まで全部パスするか書きたいときは
it { expect( f(0) ).to eq (0) }
it { expect( f(1) ).to eq (2) }
...
ってズラっと列挙しろってこと?

549 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:14:45.72 ID:QLWK33W3.net]
あと、「nの2倍を返す」という観点と「入力は0から255まで」という観点がごっちゃになってるのも良くない
この場合、前者を代表値(5とか)でテストして、それに加えて後者の観点で境界値(0と255)を試すくらいでいいと思うよ
代表値は冗長かもしれないけど前者の観点をわかりやすく表現するという意味では価値はある

550 名前:デフォルトの名無しさん [2017/12/23(土) 11:18:46.43 ID:LnjVX11P.net]
プロパティテストにしろよ。

551 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:58:54.91 ID:YmDQ4aAw.net]
>>534
なるほど、どうもありがとう
代表値、境界値(+不正な値)を試すくらいでいいんだね

552 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 15:22:55.73 ID:f0qvO5Sa.net]
テステス

553 名前:デフォルトの名無しさん [2017/12/23(土) 15:29:55.01 ID:UWK7YGb5.net]
荒らしがハッスるしとる
やっぱアンチも人のいないアンチスレより人の多い本スレに来てしゃべりたいのか

かわいそう

554 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 15:32:00.40 ID:f0qvO5Sa.net]
あ、いや、いままでとちょっと違うことを書き込もうと思ったけど
ID変わってたかなーって思っただけ
変わってなかったので違う話はしないよw
あと他のスレには行かないと何度もいってる
あきらメロン

555 名前:デフォルトの名無しさん [2017/12/24(日) 09:48:03.56 ID:24EH1p52.net]
https://rubyinstaller.org/downloads/

Windows10 に、Ruby を入れようと、
上のページの、7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった

C:\Ruby24-x64\
とフォルダ名を変えたけど、ここからどうやってインストールするの?

それとも、これはインストーラーではないのかな?

556 名前:デフォルトの名無しさん [2017/12/24(日) 10:02:29.66 ID:naA/wMe4.net]
環境を書いてから
何したいかを言え



557 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 10:08:38.24 ID:imZP4RC3.net]
なんで素直にexe落とさないの?

558 名前:540 mailto:sage [2017/12/24(日) 10:48:40.19 ID:24EH1p52.net]
圧縮された書庫だから、7-Zip Archives から、Ruby 2.4(x64)をダウンロードしたけど、
これはインストーラーとは違うものなのか?
rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど

7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<287KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef