Ruby 初心者スレッド Part 65

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

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

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

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

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

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/12/22(土) 04:46:34.41ID:84E3pYZa0
Rubyの絵本、2008
たのしいRuby 第5版、2016

3ステップでしっかり学ぶ Ruby入門、2018

かんたん Ruby (プログラミングの教科書)、2018

プロを目指す人のためのRuby入門、2017

改訂2版 パーフェクトRuby、2017

改訂2版 Ruby逆引きハンドブック、2018 (中級者向け)

Effective Ruby、2015 (中級者向け)

メタプログラミング Ruby 第2版、2015 (中級者向け)

リファクタリング:Rubyエディション、2010 (中級者向け)

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け)

Rubyのしくみ、2014 (中級者向け)

改訂4版 基礎 Ruby on Rails、2018

パーフェクト Ruby on Rails、2014

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014

オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016

Seleniumデザインパターン&ベストプラクティス、2015
2018/12/22(土) 04:47:41.34ID:84E3pYZa0
開発環境

RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html

RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること。
RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません

サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html

Emacs
GNUの高機能エディタ

Vim
Emacsと同じぐらい有名なCUIベースのエディタ

VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
2018/12/22(土) 14:30:22.80ID:uFQ/hnLUM
>>1
5デフォルトの名無しさん (ワッチョイ cb80-JI52)
垢版 |
2018/12/23(日) 02:23:36.39ID:lfndw29D0
前スレの、>995

>rubyでサイトにアクセスさせてたんだけど、そのrubyが急に動かなくなってしまいまして、どうしたもんかと

selenium-webdriver(SW) を使っているなら、ブラウザが新しくなってエラーが出るとか?
SW, chromedriver を最新にすれば?

最新のchromedriver をダウンロードする
http://chromedriver.chromium.org/home

レポジトリの情報を見る。
gem search -r selenium-webdriver
#=> version 3.141 が最新

グローバルにインストールする。
gem install selenium-webdriver

インストール済みGemを確認する。
gem list selenium-webdriver
2018/12/25(火) 09:31:38.95ID:w87C2v/dM
今年のクリスマスは新しいバージョンないのか
2018/12/25(火) 19:08:55.81ID:+tXPBaqnM
Ruby 2.6.0 キターーーー
8デフォルトの名無しさん (アメ MM59-wUZI)
垢版 |
2018/12/26(水) 20:00:19.74ID:v8erlN15M
> なお、「Ruby」で採用されているJITコンパイラーは、他の言語で採用されている一般的なものとは異なり、
> C言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラーを用いてネイティブコードに変換することでJITコンパイルを行うという手法(MJIT)を採用しているという。
> そのため、「Ruby 2.6」でJITコンパイラーを利用するには「GCC」、「Clang」、あるいは「Microsoft VC++」によってビルドされた「Ruby」実装と、それをビルドしたコンパイラーを実行時に利用できる必要がある。

トッポいなぁwww
2018/12/26(水) 21:07:57.20ID:8V4rShRI0
それは、JITではないな。
2018/12/26(水) 23:00:34.51ID:lC66I3j80
Cみたいに、構造体CPersonを要素とする配列を作りたいんだけど、どうやればいい?
CPerson Struct.new(:name, :age);

persons = [
CPeson.new("Taro Yamda", 25),
CPeson.new("Yuko Suzuki", 20),
CPeson.new("Erika Toda", 30)
];
で定義して、参照は、

k = 要素番号;
name = persons[k].name;
age = persons[k].age;


みたいにするのが標準?
2018/12/26(水) 23:01:21.88ID:lC66I3j80
誤: CPerson Struct.new(:name, :age);
正: CPerson=Struct.new(:name, :age);

orz
2018/12/27(木) 00:05:55.93ID:zcYaa59I0
Effective Ruby の著者のサイトに、本のソースコードが載っている

項目10 : 構造化データの表現には、Hash ではなく、Struct を使おう
https://github.com/pjones/effrb/blob/master/oop/struct_test.rb

ハッシュキーは内部実装の詳細情報なので、
これがユーザーに公開されているのは、良くないから

一方、Struct は、Class Generator。
簡易クラス
2018/12/27(木) 01:03:54.71ID:KLGborwtM
簡単にクラスが作れる!軽い気持ちでじゃんじゃんクラスにしてね!な言語かと思ってたのに簡易クラスとは…
2018/12/27(木) 02:41:44.91ID:zcYaa59I0
Struct は入門書にも書いていないのに、これを使うのは物好きな人だろう。
書き捨てのツール作りとかに使うのかも

でも、Rails のような大規模プログラムでも使っているけど
15デフォルトの名無しさん (アウアウエー Sa02-n9eg)
垢版 |
2018/12/27(木) 07:26:53.72ID:4d8pe2yNa
>>8
お前さんが考えてる「遥かにスマートな方法」って何?
2018/12/27(木) 07:31:41.61ID:+XOHKY4Q0
面倒くさいからコンパイラも内蔵してくれ
2018/12/27(木) 11:44:26.94ID:gNvYWHErr
お前ら詳しすぎ
2018/12/27(木) 11:52:39.98ID:lYmcIHJL0
>>10
CPerson.new(・・・)
の代わりに、Syntax Suger として
CPerson[・・・]
を使えるらしいので、やってみたところ上手くいった:

CPerson = Struct.new(:name, :age);  # CPerson型の型定義

$g_persons = [
 CPerson["Taro Yamda", 25],
 CPerson["Yuko Suzuki", 20],
 CPerson["Erika Toda", 30]
];
for k in 0..2
 name = $g_persons[k].name;
 age  = $g_persons[k].age;
 print name, ", ", age, "\n";
end
2018/12/27(木) 12:38:00.49ID:M6yD45RN0
何がしたいのかよくわからんがRubyでfor文は殆ど使わない

$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}
2018/12/27(木) 12:47:26.89ID:xdSwIlO30
forを使わないのは良いが
そこでeachとか使われると萎える
2018/12/27(木) 12:57:10.36ID:xdSwIlO30
これのどちらかだな(%よりはformatの方が推奨される)

puts $g_persons.map { |p| 'name = %s, age = %s' % p.to_a }
puts $g_persons.map { |p| "name = #{p.name}, age = #{p.age}" }
22デフォルトの名無しさん (ワッチョイ 6e8a-ZwQs)
垢版 |
2018/12/27(木) 12:59:00.75ID:fJVcpN3h0
print name, ", ", age, "\n";
ってのはただの例だろうからこの場合eachよりふさわしい方法はないでしょ
代替案も言えない屑は勝手に萎えてろ
2018/12/27(木) 13:01:20.74ID:aB5zW/KI0
>>21
なんでわざわざmap?w
2018/12/27(木) 13:05:11.39ID:xdSwIlO30
>>23
関数型とか副作用とか勉強すると良いよ
2018/12/27(木) 13:10:47.55ID:uAUh4s+A0
初心者スレなんだから、そこを解説すべき。
2018/12/27(木) 13:44:32.30ID:M6yD45RN0
煽り抜きで>>20はアスペっぽい
文脈が理解できてない
2018/12/27(木) 13:48:54.48ID:T8r+bbof0
Ruby鉄の掟

map <-偉そう
each <- 普通
for <- 素人そう

ヲタ同士のマウンティングによく使われるのでこの格付は覚えておいて損はない
2018/12/27(木) 13:53:41.85ID:xdSwIlO30
>>26
お前以外は俺が言ったことを理解できてるぞw
だからアスペはお前じゃん
2018/12/27(木) 14:21:51.98ID:M6yD45RN0
>>28
いやだからさ、初めから配列arrの要素に対してこういうことをした結果を出力したいっていうのであれば
puts arr.map{|e| hoge}.join(s)
て書くのは当たり前だけど、この元の発言の人はそんなこと言ってなくてむしろ配列の参照の仕方について言ってるんだから上の説明じゃ全然駄目だってことくらいわかるだろ
ドヤ顔で他人見下して見当はずれの発言しているあんたが痛いって話だよ
2018/12/27(木) 14:47:49.02ID:aB5zW/KI0
>>24
関数型。w
ふつうにふつうのコードを書けよ。
2018/12/27(木) 17:27:15.49ID:xdSwIlO30
>>29
やっぱアスペじゃん

俺は >>19 の書き込み、forを使ってるものを「forなんて殆ど使わない」と言って
eachを使って書き換えました。(どやぁ)
っていうのを見て、萎えた(eachも使わねーよ)って言ってるだけだから

arrの要素に使ってこういうことした結果〜とか
そんな話してねーから
32デフォルトの名無しさん (ワッチョイ 95b3-ZwQs)
垢版 |
2018/12/27(木) 18:34:27.49ID:PMl9P7n20
質問者の意図を無視して勝手に副作用だの言ってる奴いて草
アスペはほんと言うことがめちゃくちゃだな
2018/12/27(木) 18:43:10.17ID:xdSwIlO30
元の質問者になんかレスしてねーのに
文脈わかってないんだな。
34デフォルトの名無しさん (ワッチョイ 256c-ZwQs)
垢版 |
2018/12/27(木) 19:12:45.53ID:lMOgiRq50
ID:xdSwIlO30
こいつ本気でアスペだろ
質問者への回答へのレスに質問者の意図を無視して上から目線で見当違いないちゃもんつけてんだから
本当に意味不明だわ
初めから属性を出力することが目的だってなってたら誰だってmapしてjoinなりするだろ
当たり前のことでマウントとって最高に気持ち悪い
2018/12/27(木) 19:15:44.30ID:dG7CRoznM
副作用うんたらかんたら君は一切画面出力せずにプログラミングしろよwww
ファイルの読み書きも禁止。全部メモリ上だけでやれやwwwww
36デフォルトの名無しさん (アークセー Sx75-5/pO)
垢版 |
2018/12/27(木) 19:19:47.51ID:142Xb6wkx
まとめるとこうだな
for文よりary.each { |e| hoge(e) }って書いた方が一般的だよってレス(>>19)に対して
hoge(e)のところがたまたま今回putsだったってだけでputs ary.map { |e| fuga(e) }って書かないとか萎える(>>20)
と意味不明なこと言って荒らしまわってる奴がいる
精神障碍者の相手をしてはいけないということだ
2018/12/27(木) 19:45:12.62ID:lYmcIHJL0
試してないけど、C/C++ ばっかりの自分には、
 $g_persons.each { |p| printf( "name = %s, age = %s\n", p.name, p.age) }
なら分かるけど、
 $g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}

は、% p.to_a の部分がまったく分からないといっても過言ではない。

' の後ろの % って何? p.to_a も分からない。
2018/12/27(木) 19:52:19.85ID:lYmcIHJL0
ああ、分かった。% は、sprintf の syntax suger みたいなものらしいね。

でも、この場合、p.to_a は、本当は良くないと思うよ。
なぜなら、そもそも構造体自体が、「並び方」に依存しないプログラムを
作るために用いるものなのに、その目的に逆行してしまうから。

to_a だと、構造体を定義したときにメンバが並んでいる順に配列のように
取り出してしまう。ところが、構造体は、そういう順序に依存するプログラム
に問題がおきやすいから導入するもんなんだよ、これが。
2018/12/27(木) 21:07:24.43ID:xdSwIlO30
>>38
いい答えだね。
だけどアスペは文脈がわからないからこう言うんだ。

お前が言ってることは>>18に対してのレスではない!と

>>18へのレスではなく、>>19へのレスなのは見ればわかるが
アスペは文脈がわからないから関係ない話をしてるように見える。
関係ない話をするな。俺に攻撃をするな。と)
2018/12/27(木) 21:32:46.10ID:QDWFXisuM
お前もしつこいぞ
2018/12/27(木) 22:22:45.06ID:xdSwIlO30
はい。しつこいつもりですが?
42デフォルトの名無しさん (ワッチョイ 555d-ZwQs)
垢版 |
2018/12/27(木) 22:55:34.21ID:oOio5T5+0
素で気持ち悪いなこいつ。もはや日本語による意思疎通は不可能だな
>>20の異常性が分かるまとめ

>>18 「生のトマトが嫌いなんだけどどうやったら克服できるだろうか」
>>19 「火を通したトマトを食べてみたら案外慣れるかもよ」
>>20 「トマトは生が一番おいしいに決まってるだろ。火を通すとか萎えるわ」
>>19 「生が苦手って言ってるからそれ以外を勧めてるんだけど……」
>>20 「いや、俺はお前に言ってんだけど。トマトは生に限るだろ」
>>19 「えぇ……」
2018/12/27(木) 22:56:12.17ID:xdSwIlO30
アスペはたとえ話が苦手なんだからやめとけw
44デフォルトの名無しさん (ワッチョイ 76e8-5/pO)
垢版 |
2018/12/27(木) 23:01:03.71ID:pGG7UwBL0
>>42
適確すぎて草
そしてアスペは例え話を理解できないらしいからきっとこれも理解できてねえぞ
2018/12/27(木) 23:02:55.51ID:QDWFXisuM
よくみたらこいつ単芝君じゃん
この板に粘着してる荒らしだからスルーしとけ
2018/12/27(木) 23:08:52.97ID:xdSwIlO30
>>42が間違ってることはちゃんと説明できる

本当の >>20>>19へのレスになっている
>>19で書いた内容がクソであると言ってる)

だけど>>42 では 20 が 18 へのレスになってる。

アスペはこの違いがわからない
2018/12/27(木) 23:21:36.69ID:zcYaa59I0
>>37
メタプログラミングで、すべての属性名と値を、表示できないの?
2018/12/27(木) 23:26:16.89ID:xdSwIlO30
メタプログラミングじゃなくて、普通にto_hとかでわかるがそういう問題じゃないw
2018/12/27(木) 23:32:04.17ID:BM9tGIl2M
>>47
Struct#membersでメンバの名前を取得できるよ
2018/12/27(木) 23:34:00.73ID:BM9tGIl2M
やっぱ単芝君はガチのアスペやったんだな
>>42の20は普通に19への返事になってんでしょ
それが理解できないのは脳みそに欠損でもあるんじゃねえの
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況