トップページ⇒tech
984コメント268KB

Rubyについて Part47

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/01/16(月) 13:15:31.00
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお

前スレ
Ruby 初心者スレッド Part 46
http://hibari.2ch.net/test/read.cgi/tech/1317790320/


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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0222デフォルトの名無しさん2012/05/09(水) 09:07:49.61
>>220
結合強度を考えると必然だと思うが。
0223デフォルトの名無しさん2012/05/09(水) 10:23:29.50
doは結合強度低いのが存在意義みたいなもんだからね
0224デフォルトの名無しさん2012/05/09(水) 16:48:27.03
>>221
インスタンス変数に代入している行の番号をハードコードしてるから
ソースへの行の追加や削除に対して脆弱だなと思って

ただソースコードにset_trace_funcを埋めこむのではなく
対話型デバッガから行番号を指定させる場合とかなら便利に使えそう
0225デフォルトの名無しさん2012/05/09(水) 17:30:19.40
新ラムダの場合
->(){}
->()do end
両者の結合強度は同じなのでは?

p ->() do end
が
p( ->()) do end
になったりしたらそもそも成立しないのだから
現に
p ->() do end は p( ->() do end ) と解釈されるし

ところで、エラー再現最小コードはこれだった
p ->do 1.times do end end

begin endでも似たようなことがおこる
いままでそんな記述をする人がいないので問題にならなかったのかな
p begin 1 end #通る
p begin 1.times do 1 end end # エラー
もちろん
p( begin 1.times do 1 end end ) # 通る
0226uy2012/05/09(水) 20:38:08.92
>>225
あ、これって->と関係ないバグじゃん
報告行くしかないぜ
0227uy2012/05/09(水) 20:49:46.67
報告した
どうでもいいけどRD?ってものの書式分からなくてミスった
どう書くのあれ・・・
0228デフォルトの名無しさん2012/05/10(木) 01:48:25.48
p begin 1.times do end end # エラー
p begin p do end end # エラー

p -> do 1.times do end end # エラー
p -> do p do end end # 通る

begin endの方は関数形式でもエラーになるね
0229デフォルトの名無しさん2012/05/11(金) 19:00:31.26
Rubyって幼稚園の時に使ってたでんぷん糊みたいだよね
http://process5.img.jugem.jp/20100326_737012.jpg
0230デフォルトの名無しさん2012/05/11(金) 21:27:48.63
グルー言語だけに?
0231デフォルトの名無しさん2012/05/12(土) 06:39:08.53
大人が使うとそれなりのものが作れるけど、
幼児が使うとネバネバのベチャベチャになるということ。
0232デフォルトの名無しさん2012/05/12(土) 10:30:39.60
と言うかネバネバのベチャベチャにして
糊とはいかなるモノなのかを身体で感じさせるのが目的だけどねアレ
0233デフォルトの名無しさん2012/05/12(土) 11:01:49.16
フエキ糊ボトル型のハンドクリームとかあるんだぜ。
0234デフォルトの名無しさん2012/05/12(土) 12:10:59.38
完全敗北かよ…orz
http://codezine.jp/article/detail/2482?p=2

3.1. 基本情報
http://codezine.jp/static/images/article/2482/html/table1.html
3.2. 機能
http://codezine.jp/static/images/article/2482/html/table2.html
3.3. 操作性
http://codezine.jp/static/images/article/2482/html/table3.html
3.4. 総合評価
http://codezine.jp/static/images/article/2482/html/table4.html
0235デフォルトの名無しさん2012/05/12(土) 17:02:19.24
https://trac.macports.org/browser/trunk/dports/lang/ruby19/Portfile

これMacPortsのruby19なんだけど、
versionは1.9.3-p194なのに、
gemが入るディレクトリ名とか1.9.1とかで混乱するんだけどこれはミス?

それとも1.9.3は1.9.1系なの?
だからこれでOKなの?
0236デフォルトの名無しさん2012/05/12(土) 17:40:31.69
http://www.ruby-lang.org/ja/news/2010/08/18/ruby-1-9-2-is-released/#label-7
ライブラリパスの1.9.1はABIのバージョンであって、rubyのバージョンではない。
0237デフォルトの名無しさん2012/05/12(土) 17:43:04.85
そこは「APIのバージョン」という、インタプリタのバージョンとは別の数字ということになってる
(あるいは、1.9.3のリリースの時には、なってた)
0238デフォルトの名無しさん2012/05/12(土) 18:01:14.54
embeddedだから当たり前といえばあたり前なのかもしれなけど
mruby は 64bit対応してないな…segmentation errorでこける…
0239デフォルトの名無しさん2012/05/12(土) 18:20:05.81
なるほどねー
ややこしいけどしかたないねー
0240デフォルトの名無しさん2012/05/12(土) 23:48:23.25
>>238
embeddedだからポータブルで当然だし
バグだと思うよ
0241デフォルトの名無しさん2012/05/13(日) 00:04:31.41
そういえばRubyチップはまだなのかい?
LLプログラマブルなガジェットとか楽しそうじゃん
0242デフォルトの名無しさん2012/05/13(日) 00:23:41.70
YARV と RiteVM の比較マダー
0243デフォルトの名無しさん2012/05/13(日) 11:22:52.80
1.8.6でからruby使ってないんだけど、最近一層Windowsの冷遇が進んでる?
最新版のMS-Win32版のバイナリが見つからないんだけど。
0244デフォルトの名無しさん2012/05/13(日) 11:49:42.49
なんで一瞬で見つかるのに、お前それが出来ないの?

「Ruby 1.9.3」登場、Windows向けインストーラー「RubyInstaller」にも新版が追加
http://www.forest.impress.co.jp/docs/news/20111101_487883.html
0245デフォルトの名無しさん2012/05/13(日) 12:12:53.65
mswin32版ではなくmingw32版だから…
0246uy2012/05/13(日) 13:46:49.89
ゆんゆん電波降り注ぎングで工作員かきこんじゃいまひゅううううううううううううううううううううううううううううううううううううううううううううううううう
0247デフォルトの名無しさん2012/05/13(日) 14:29:32.52
探さないと見つからない時点で充分冷遇
0248デフォルトの名無しさん2012/05/13(日) 15:35:06.61
探さずに見つかるってどういう状態?
0249uy2012/05/13(日) 15:52:30.14
RubyはWindowsで使ってこそ真価を発揮する
0250デフォルトの名無しさん2012/05/13(日) 16:31:27.63
http://ja.wikipedia.org/wiki/Lua
>Luaにおけるテーブル(連想配列)の実装はかなり最適化されており、特に>キーに数値のみを使用した場合は、単純な配列としてさらに高速に動作する>ようになる。

Rubyもこうしようよ。こっちの方が良いよ。
ArrayとかHashとか使い分けたくないじゃん!
0251デフォルトの名無しさん2012/05/13(日) 16:57:26.16
言い方の問題だな
数値以外もキーに使えるが、その場合の動作は低速となる
0252デフォルトの名無しさん2012/05/13(日) 17:49:39.53
よし、じゃあ比較してみるんだw
0253デフォルトの名無しさん2012/05/13(日) 18:37:41.17
Luaの低速な場合ですらRubyよりは速そうだw
0254デフォルトの名無しさん2012/05/13(日) 19:12:02.08
比較して結果示して言えよ
0255デフォルトの名無しさん2012/05/13(日) 20:12:01.51
いままで組込用途ではLuaが調子にのってたけど、mrubyの登場で完全勝利だね
0256デフォルトの名無しさん2012/05/13(日) 20:35:45.22
現状では月となんとやらレベルの差があるのに何言ってるんですかもう
0257デフォルトの名無しさん2012/05/13(日) 21:12:19.97
それは性能だけの話だろ?ほんと視野の狭いやつだなw
言語的には、あんなキモオブジェクト指向、Rubyと比べるまでもない。
0258デフォルトの名無しさん2012/05/13(日) 21:17:07.40
Luaのどのへんがキモオブジェクト指向なのか詳しく
0259デフォルトの名無しさん2012/05/13(日) 21:39:38.96
>>243
1.8.6の頃からなら同じ場所にあると思うのだが…
以前使ってたmswin32版って、具体的には何を使ってたの?
0260デフォルトの名無しさん2012/05/13(日) 21:45:28.57
妹がRailsで掲示板的なものなら作れるようになってきたぞ
0261デフォルトの名無しさん2012/05/13(日) 21:52:26.59
だからお前はまず妹をうpするところから始めろよ
0262デフォルトの名無しさん2012/05/13(日) 21:56:19.91
>>259
お前いい加減なこと言ってんじゃねえぞ
ふざけんな
0263デフォルトの名無しさん2012/05/13(日) 22:30:04.23
>>262
mswin32版って言えばここのことじゃないの?
ttp://www.garbagecollect.jp/ruby/mswin32/ja/
ここは1.6系辺りからだいたい似たようなデザインのサイトで
長いこと(1.8.6ならとっくに)Ruby公式からリンク張られてると思うのだが…

んで、それ以外にもwin用Rubyはあるんだから
もし違う環境のことを指してるなら
以前はどんな環境を使ってたのか教えてくれ、と言ってるんよ
0264デフォルトの名無しさん2012/05/13(日) 22:40:22.16
>>263
Windows版を必要としないから無いから
そこのサイト初めて見たけど、1.9.3無くてワロタ
最新版って1.9.3のことだろ?
0265デフォルトの名無しさん2012/05/13(日) 22:41:33.70
>>264
ごめんそういうことか、すまん悪かった…
0266デフォルトの名無しさん2012/05/13(日) 22:41:37.49
なんで一瞬で見つかるのに、お前それが出来ないの?

「Ruby 1.9.3」登場、Windows向けインストーラー「RubyInstaller」にも新版が追加
http://www.forest.impress.co.jp/docs/news/20111101_487883.html
0267デフォルトの名無しさん2012/05/13(日) 22:44:03.52
Rubyのサポートチームが
貧弱だって分かるよね。
0268デフォルトの名無しさん2012/05/13(日) 22:44:58.97
てめぇの情報検索スキルの無さを棚に上げて何言ってんだ?
0269デフォルトの名無しさん2012/05/13(日) 23:02:21.88
LuaはJITがあるからMRIじゃ勝負にならないよな
JRubyかRubiniusの熟成を待つしかないかね
0270デフォルトの名無しさん2012/05/13(日) 23:13:25.33
Windows版Rubyの最新版は1.8.6です(キリッ)
0271デフォルトの名無しさん2012/05/13(日) 23:18:04.46
Windowsとかローソンの情報端末とかATMでしか使った事ないわw
あと案内板とかなwフリーズしてたけどw
0272デフォルトの名無しさん2012/05/13(日) 23:19:07.32
>>266
だからそれmingw32版だから
0273デフォルトの名無しさん2012/05/13(日) 23:20:28.90
自分でビルドすればええやん
0274デフォルトの名無しさん2012/05/13(日) 23:29:14.03
ASRってもう出てないんだっけ。
あれmswinだよね?
0275デフォルトの名無しさん2012/05/14(月) 00:35:35.18
なんでビルドしてくれる人いないのさ!
そんなにRubyは使われてないの?
0276デフォルトの名無しさん2012/05/14(月) 00:37:32.64
うん。使われてない
だからPython使ったほうがいいよ
0277デフォルトの名無しさん2012/05/14(月) 00:55:35.13
windowsで使うこと考えると
pythonの方が安心感があるのは確か
0278デフォルトの名無しさん2012/05/14(月) 01:09:58.24
相変わらず"windows"という文字列を食わせると発狂しちゃうんだなここのおっちゃんたちはw
0279デフォルトの名無しさん2012/05/14(月) 08:16:15.30
ということにしたいのですね
0280デフォルトの名無しさん2012/05/14(月) 08:24:03.68
>>270
流石にそれ話からズレてんぞ
0281デフォルトの名無しさん2012/05/14(月) 08:45:36.26
http://www.artonx.org/data/asr/
0282uy ◆YJCoHSVeEE 2012/05/14(月) 18:09:56.68
色々、大切なものを思い出してしまったぜ
この言語を作ってくれたMatzに感謝をする
そして今までム板、マ板に多大なる迷惑をおかけした
ここにお詫び申し上げる

俺はあるものを守る為に力をつけたはずだった、壊す為ではなく
こんな俺でも、こんなクズの人生ひとつで何かを守れるならば上等
0283デフォルトの名無しさん2012/05/14(月) 18:51:15.70
mrubyってちっとも「軽量」じゃないな
0284デフォルトの名無しさん2012/05/14(月) 18:59:20.26
何を基準にして?
0285デフォルトの名無しさん2012/05/14(月) 19:19:17.64
言語機能は一切削ったりしません、がコンセプトだからあんなもんだろ
0286デフォルトの名無しさん2012/05/15(火) 00:42:18.99
そりゃ言語仕様を削ったらRubyである必要性もよく分からなくなるだろうし
0287デフォルトの名無しさん2012/05/15(火) 08:02:14.18
class O
attr_accessor :x
end
o = O.new
o.x = 2
x = 2
def draw x
p x
end

draw( x -40 )
draw( o.x-40 )
draw( o.x - 40 )
draw( o.x- 40 )
draw( o.x -40 )


この中で1個だけエラーでますとかいってすぐ答えられる奴いんの?
0288デフォルトの名無しさん2012/05/15(火) 08:25:45.43
http://ideone.com/T8GGV
     ____    ━┓
   /      \   ┏┛
  /  \   ,_\.  ・
/    (●)゛ (●) \
|  ∪   (__人__)    |
/     ∩ノ ⊃  /
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0289uy2012/05/15(火) 10:25:10.76
考え込むほどのことでもないよ

o.x -40
↑で
o.xが変数じゃなくてメソッド扱いされて
o.x(-40)

こんな解釈になってるんだろ
prog.rb:15:in `<main>': wrong number of arguments (1 for 0) (ArgumentError)
↑訳
プログラム、rb15 main
o.xは、1個の引数が渡されています、0個の引数なのに(笑)ッププw  その理はアルグメントエラー()

Rubyに変数はメソッド(キリッ)
とかいう設計が仇になった瞬間だった
どうみても設計ミスです本当にありがとうございました!!!!
どうするの?ネェネエコレドウスルノ???Rubyは未来永劫 o.x -40 とかかけないのー?別にいいですけどw
え?? でも四則演算はダメだけどこれは通るんだね
draw( o.x ^40 )
draw( o.x |40 )
     ____    ━┓
   /      \   ┏┛
  /  \   ,_\.  ・
/    (●)゛ (●) \
|  ∪   (__人__)    | プッギャアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwwwwww
/     ∩ノ ⊃  /
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0290デフォルトの名無しさん2012/05/15(火) 10:40:10.01
アルグメントエラー……
0291デフォルトの名無しさん2012/05/15(火) 14:26:54.94
二項演算子の両端はくっ付けるか離すかで揃えるのが基本だから
まずそんなミスはしないと思うが
0292デフォルトの名無しさん2012/05/15(火) 14:28:20.19
ちなみに

o.x

が変数となることは絶対にないよ
変数っぽく見えるメソッドであることはあるけどね
0293uy 2012/05/16(水) 21:30:46.56
Rubyにデストラクタってないけど

いつ破棄されるか分からない、とあるタスク内で
生成したスレッドの破棄ってどうすればいいのか分からなくなった

クラス変数辺りにスレッド格納して次回のスレッド生成時の前に破棄とかになりそう
0294デフォルトの名無しさん2012/05/16(水) 21:32:37.51
nilでも突っ込んで放置しとけばええやん?
0295uy 2012/05/16(水) 21:36:41.50
>>293
何にnilを突っ込むの?

「とあるタスク」が破棄される直前までそのスレッドは必要
でも「とあるタスク」はいつ破棄されるか分からない

0296デフォルトの名無しさん2012/05/16(水) 21:49:28.69
>>295
んと、とりあえずタスクの意味を教えてくれるかな。
それを教えてくれれば回答できる可能性がある。
0297uy 2012/05/17(木) 06:57:44.26
Rubyでゲーム作ってて
ゲームでいうタスクシステムのタスクです
0298デフォルトの名無しさん2012/05/17(木) 09:19:04.52
流石に定番すぎて、もはや撒き餌にすらならんぞ、それは。
0299uy 2012/05/17(木) 09:48:51.04
あれ?
Thread::listで取得してみたらふるいスレッドなくなってた
もう動けばいいや
0300デフォルトの名無しさん2012/05/17(木) 21:57:37.49
rubyをゲームを作るのに使うんじゃなくて、ルビーでゲームを作るのはやめたほうが良いかもしれない
0301デフォルトの名無しさん2012/05/17(木) 22:32:00.48
ゲームが出来たらライブラリの制作者に知らせるとものっそ喜ばれると思う
0302uy2012/05/18(金) 02:08:32.03
>>300
もうファイル数40ソース総量5000行くらいかいたから止まれない
でも普通に作れてる

>>301
多分喜ばれないと思う


てかRubyでのゲーム開発環境作りさえ出来るならかなり良いと思うよ
2Dで派手なエフェクトつけないゲームならこれ以上の選択肢はないかな
情報がろくにないから多分環境作りが大変なだけ
ゲームプログラムとは別に、RubyとRuby周辺ツールに詳しくないと開発できないからなw
俺様はもしかしたらこのまま人柱になるのかもしれない
0303デフォルトの名無しさん2012/05/18(金) 02:23:52.86
あるメソッドの内部処理が「ダメだった」場合に空のオブジェクトを返すかnilを返すか自作例外を発生させるかの定まった回答はない
そのメソッドやクラスがどういう場面で使用されるか、をよく考えた上で自分で決めるしかない

B#keysが[]を返すのは、空のHashに対するHash#keysが[]を返すことからの類推と、
そのB#[]の作者が[]メソッドに照会の機能を持たせてるからだと思う
メソッドの戻り値の内容はこっちで吟味するからとりあえず配列を返しといて下さい、という
0304デフォルトの名無しさん2012/05/18(金) 02:50:18.50
#[key]でnilが返るのも#keysで[]が返るのもダメだったなんて意味じゃないんだが…
入ってると思ってたのに入ってなかったのは単に使い手が仕込んだバグだろjk
0305デフォルトの名無しさん2012/05/18(金) 03:30:11.67
>>302
RPGツクールはRubyで書けるぞ
0306uy2012/05/18(金) 03:40:43.63
でもそれ、ぷろぐらまーが使うものではないだろ
0307uy2012/05/18(金) 05:16:14.93
完成したゲームをライブラリ製作者に見せたら
ゴミを投げ込むなと怒られた f^_^;)
0308デフォルトの名無しさん2012/05/18(金) 08:32:36.09
つまりRPGツクールみたいにプログラムの上で動作するプログラムを書くのがスクリプトであるから
それそのものでゲームを作るのはDVDプレーヤーで動くゲームを作るみたいな事になるんじゃないか
0309デフォルトの名無しさん2012/05/18(金) 08:44:56.46
頓珍漢なこと言う前にSDLラッパーでも眺めてきたらどうか
0310デフォルトの名無しさん2012/05/18(金) 15:36:46.36
>>304
ダメ、の意味するところにもよるが、通常の返却値に使うデータがない状態は fault と言えるから間違ってはいまい
{ }.keys のときには Hash::Error::NoKey で止まってもよかったし、warn: xxx.rb(12) Hash has no keys と出力してもよかった
でも、それだと不便だから(という理由だけで)敢えて空の配列を返すことにしてるだけだろ
0311デフォルトの名無しさん2012/05/18(金) 21:57:25.37
>>310
keysとかいてたら普通は配列が返ってくると思わない?
なのにnilが返ってきたらイラッとこない?
おめー配列返す振りしてなにnilかえしてんだぶちまわすぞコルァってならない?
0312デフォルトの名無しさん2012/05/18(金) 22:20:47.35
null値返すよりnull object返せってオブジェクト指向の教科書にもよく書いてあるもんな。
0313デフォルトの名無しさん2012/05/18(金) 22:28:21.85
期待される機能は「キーの入った配列」が返ってくることだ
そのキー自体がなかったという”異常事態”の場合、返ってくるモノは配列でなくてもいい、という設計でもそれ自体は一向に構わない

実際問題として、ほとんどの場合、どこかで条件分岐はしなくてはならない
処理のどっかで空っぽになったんだから最終出力も無言で空っぽでいいじゃんという男前プログラムが必要とされる機会はそうそうあるもんではない
0314デフォルトの名無しさん2012/05/18(金) 22:33:26.17
>>313
ん。で?
0315デフォルトの名無しさん2012/05/18(金) 22:38:15.86
そもそも>>303の文脈がなさすぎる
コピペ厨はこれだから本気で困る
0316デフォルトの名無しさん2012/05/18(金) 22:44:19.70

サイトで証明書の警告がでるけど、リンク先怪しいサイト?
http://www.ruby-lang.org/en/downloads/
上のページの、
「For the latest instructions on installing rvm, check out the RVM installation page.」
のリンク先は、下のURLになっている。
https://rvm.beginrescueend.com/rvm/install/
ここにアクセスすると、httpsの証明書のエラーが出る。

Firefoxでは下記のエラー(警告)がでる。

This Connection is Untrusted
You have asked Firefox to connect
securely to rvm.beginrescueend.com, but we can't confirm that your connection is secure.
Normally, when you try to connect securely,
sites will present trusted identification to prove that you are
going to the right place. However, this site's identity can't be verified.

証明書まともに管理してないサイトってなんかアレだなぁ
0317デフォルトの名無しさん2012/05/18(金) 23:33:23.67
Ruby初めて勉強する場合ってRailsからやるほうがいいの?それともRails使わずに基本からやるほうがいいの?多言語の経験はある
0318デフォルトの名無しさん2012/05/18(金) 23:38:16.28
>>316
rvmのwayeのとこだが、自己書名証明書なんだね。
httpsにしただけでセキュアなつもりになっていると思われる。

まぁrvmなんてオワコンだし、スルーでよいよ。
0319デフォルトの名無しさん2012/05/18(金) 23:40:10.96
というか、いまはこっちだ。
こっちは検証可能な証明書になってる。

https://rvm.io/rvm/install

Comodoだけど…
0320デフォルトの名無しさん2012/05/19(土) 00:27:48.10
nilより空の配列返してくれた方がありがたい
0321デフォルトの名無しさん2012/05/19(土) 00:54:35.16
空の配列は真と評価されるから一律で空配列返されると困るお
■ このスレッドは過去ログ倉庫に格納されています