[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 14:12 / Filesize : 98 KB / Number-of Response : 347
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Ruby 初心者スレッド Part 32



1 名前:デフォルトの名無しさん [2009/10/24(土) 06:18:12 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

164 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 08:06:53 ]
Rubyの正規表現と称して>>163がOniguruma実装限定の正規表現持ち出してきたのが笑える

165 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 08:23:44 ]
begin 〜 end だけ抽出しておいてそれに (a|b) の scan かけるんじゃだめなん

166 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:51:59 ]
>>164
1.9ならOnigurumaが標準だろ

167 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:55:27 ]
そんな寝言は1.8.7を撲滅してからほざくがよいぞ
それまでは両バージョン用併記か注釈で対応バージョン明記

168 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:58:37 ]
スレとしては 1.8.7 が推奨バージョンなんだから、
1.9 限定動作は「1.9.1 だとこれで一発」みたいなコメントはつけとくべきかもな

169 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:04:48 ]
普段く1.9の質問したら、氏ね、1.8使えと煽るくせに、
正規表現は1.9で書き込むとか、
ここの住人はダブルスタンダードだな、おい

170 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:24:05 ]
1.9でレスしてもいいんだがそうと明記すべきだぬ

171 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:24:40 ]
いつの話だよ
さすがに今1.9を使うなって奴はいないだろ

172 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:28:12 ]
>>169
だって君の言う「ここの住人」って、一人しか居ないわけでもなければ、
まったく同じ考え方をする集団ってわけでもないもの。
ダブルスタンダード認定は、前者と後者が同じ人間によって書き込まれたことを
確認してからでないと。



173 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:32:48 ]
初心者が使用すべきものと熟練者が使用して便利なものとは違うということをいまさら講釈しないといかんのか

174 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:05:25 ]
1.9はsp2出るまで町だな。

175 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:27:06 ]
1.9.3のこと?

176 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:33:30 ]
2.0マダー

177 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:39:55 ]
>>171
います

178 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 21:01:12 ]
>>168
>1.9 限定動作は「1.9.1 だとこれで一発」みたいなコメントはつけとくべきかもな

だな。1.8.7からの新機能の場合もその旨書いておいてほしいよね。
今度から>>1に追加しといてもらおう。

>>171
>いつの話だよ
>さすがに今1.9を使うなって奴はいないだろ

おまえはまず>>1を声だして100回読め




179 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 21:27:12 ]
>>158-159
繰り返しの計算処理なんだわ
具体的には、ニューラルネットの実装やってる
はんぱない回数の計算が学習には必要なんだけど
1プロセスだと、スレッド分けしても、複数CPUは使ってくれないってことかな?

だとすると、プロセス間通信とかを眼中にいれて設計しないとダメってことかな?
ってことは、向かうところはdRubyあたり?

180 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 01:06:18 ]
ほう、膨大な計算量を必要とする分野にも進出してるんだなあ

181 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 03:07:06 ]
>>180
実用とか研究とかじゃなくて趣味だけどね。
Rubyでやってもいいんじゃない?ってかんじで

182 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 06:53:38 ]
Rubyの入門書では、サンプルプログラムの出力を大抵以下のように書いてます。
puts 'Hello World!'
ですがたまに以下のように書き方も見かけます。
$stdout.puts 'Hello World!'

どっちも正しいと思いますが行儀の良い書き方という意味では後者になるのですか?



183 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:07:13 ]
意味不明。内部でやってることは同じだし後者には何のメリットも無い。

184 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:16:11 ]
printf("Hello World\n");と
fprintf(stdout,"Hello World\n");の違いみたいなもんだぞ
簡略できるようにしてあるのにあえて冗長に書く必要はないと思う

185 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:48:49 ]
冗長に書く意味があることはありうる

が、これに限ってはまず無いだろうな
前者の関数的メソッド puts の出力先を捻じ曲げるためには $stdout をいじるしかないわけだが
それをすると後者の $stdout.puts も捻じ曲がるんで意味がない
Ruby における 関数的メソッド puts と $stdout は不可分だ(C の puts を知ってると引っかかるかも)
もしなんらかの気の迷いで関数的メソッド puts の出力先の $stdout が標準出力以外になってるなら
それは putserr とか putsfile とかなんかメソッドを新たに作るべき

むしろ後者を書かれるとがっかりだ
むしろそのサイトなり解説書なり晒せ

186 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:15:02 ]
バッチファイルの作成を自動化できないものかと思い、eruby がつかえそうだと思いました。

REM *******************************************
REM * 作成者:ビル・ゲイツ(マイクロソフト)        *
REM *******************************************

のようなファイルをつくりたいのですが、

REM *******************************************
REM * 作成者:<%=PERSON%>(<%=COMPANY>)     *
REM *******************************************

と定義して、行の末尾の '*' の位置を変えないことってできますか?




187 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:17:47 ]
つか $stdout なら write すべきだと思うんだが
$stdout が指してるオブジェクトに puts というインスタンスメソッドが定義されてる可能性はそれほど高くない

188 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:20:47 ]
>>186
文字列なんだから String のマニュアルをダメもとで読め
ttp://www.ruby-lang.org/ja/man/html/String.html#ljust

189 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:30:54 ]
>>187
それはputsに応答しないオブジェクトを$stdoutに入れたヤツが悪くないか?
STDOUTがIOのインスタンスなんだし、IOやそのサブクラスのインスタンスであるか
相応のduck typingができることを期待するのは当然だと

実際に期待できない例にはどんなのがある?

190 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:46:20 ]
$stdoutっていずれ廃止になるんだろ?
なるべく使わない方がいいんじゃねーの

191 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:48:21 ]
$stderrなら警告メッセージのテストで使うことあるな。
begin
class << (stderr = "")
alias write <<
end
# テスト
$stderr, stderr = stderr, $stderr
ensure
$stderr, stderr = stderr, $stderr
assert_match(/.../, stderr)
end


192 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 11:49:05 ]
>>190
廃止された$defoutと混同してないか?



193 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 12:24:41 ]
>>190が代わりに何を使う気だったのかがちょっと気になる

194 名前:182 mailto:sage [2009/11/03(火) 18:12:54 ]
たくさんのレスありがとうございます。勉強になりました。
公式も見てみましたが、
単にputsとした場合はKernelモジュールのputsを指し、
そのputsはデフォルトで$stdoutに対して出力をするようですね。
やっぱり冗長なだけなようですね。

>>187
>むしろ後者を書かれるとがっかりだ
>むしろそのサイトなり解説書なり晒せ

具体的には、「JavaプログラマのためのRuby入門」という本の初っ端の例文が
$stdout.puts 'hello world !'.upcase
となっていました。
著者のartonさんはコミッタですよね?

195 名前:182 mailto:sage [2009/11/03(火) 18:13:57 ]
>>187ではなく>>185でした。すいません。

196 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 18:16:55 ]
>>194
それはJavaのSystem.out.printlnになじんだ者が類推しやすいように
そう書いてあるんじゃあないか?


197 名前:182 mailto:sage [2009/11/03(火) 18:36:50 ]
おおなるほど、そういうことだったのかな…。

198 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 19:36:32 ]
その本は読んでないけど、読んだ者が混乱するような記述なら困りものだな
後ろの章を読めばわかるのかなとは思うけど

199 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 20:34:50 ]
モジュールの場所を知るコマンドはありますか?
perlでいう perldoc -l のような。

200 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 20:55:12 ]
>>199
ri
refe
他にもなんかあったような気がするけど忘れた

201 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:01:03 ]
>>199
gem の場合は gem which

$ gem which nokogiri
(checking gem nokogiri-1.3.3 for nokogiri)
/home/me/.gem/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri.rb

標準ライブラリの場所を探す方法はあれば知りたい
いちいち「/usr …のどこだっけ」と試行錯誤するのは面倒

202 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:23:14 ]
>>199
gem whichはgem以外にも使えたはず



203 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:44:58 ]
ほんとだ知らなかった
いいこときいた

204 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:54:21 ]
$ gem which uri
/usr/lib/ruby/1.8/uri.rb

ほほう

String とか Regexp とか rb のファイルになってないものは駄目っぽいな

205 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 22:11:29 ]
>>200-202
あざっす。

206 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 22:26:20 ]
ライブラリもいけるみたいだな。
$ gem which Readline
/usr/local/lib/ruby/1.9.1/x86_64-darwin10.0.0/Readline.bundle

>>204
StringやRegexpでどのファイルに出てきて欲しいんだw


207 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 08:30:58 ]
>>186
>と定義して、行の末尾の '*' の位置を変えないことってできますか?

<%= str = "#{person} (#{company)" %>
REM * 作成者:<%= '%-50s' % str %> *

とするしかない。

208 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 08:31:51 ]
間違えた。
<% str = "#{person} (#{company)" %>
REM * 作成者:<%= '%-50s' % str %> *



209 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 09:23:58 ]
Rubyの文字列は
"hello"と'hello'のように書けますが、皆さんはどちらをメインに使っていますか?
もちろん二つの書き方には違いがあることは理解してますが、
多くのケースではどちらの書き方でも可なので、そういう場合にどちらの書き方をすべきか迷っています。

個人的にはシングルクォートをメインにして、"my name is #{name}"のような変数展開を使う場合のみダブルクォーテーションにしています。
というのもHTMLと一緒にrubyを使うことが多く、HTMLタグの値にダブルクォーテーションを使うからです。

ただ入門書やネットに転がってるサンプルなどを見ると大抵ダブルクウォーテーションのようです。
CやJavaなどの習慣でダブルを使う人が多いのでしょうか?あるいは他にメリットがあったりしますか?

210 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:13:32 ]
そもそもとして、" " でも ' ' でも処理負荷的にはたいして変わらない
文字列を数まんことか大量に使用すれば若干違うかもしれんが、たぶん他の部分チューニングしたほうが速い

よって、それ以外が効いてくることになる

で、まあ、" " が人気があるのは
変数展開を入れようとしたときにクオート部分をわざわざ書き換えなくてもいいとか
\n とかがそのまま利用できて面倒がないとか
大部分のフォントで '' の文字見栄え的な安定性が低くて使っててガッカリだからとか
そういう理由だと思う

'hello\nworld' と書いてそのまま \n が表示されて「ん?」となるのは一度や二度ではない

211 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:27:08 ]
俺は両方使い分けてるな
別にダブルクォートで統一してもいいとは思うんだけど
最近、なんとなくシングルクォートの方がきれいに見えるようになった
あとシングルクォートだと「ここでは変数展開をしません」という宣言にもなる

212 名前:209 mailto:sage [2009/11/04(水) 10:28:08 ]
>>210
おおなるほど…分かりやすい説明ありがとうございます。
それだけ例を示されると確かにダブルクウォーテーションのほうが理にかなってますね。



213 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:29:56 ]
>>211
ダブルクォートを最終的にシングルクォートに書き換えることはよくある
それはやっぱり意思表示だな

214 名前:209 mailto:sage [2009/11/04(水) 10:32:10 ]
>>211
ありがとうございます。

>あとシングルクォートだと「ここでは変数展開をしません」という宣言にもなる
これは自分も思っていました。
変数展開が必要になった時にダブルクウォーテーションを使った方が目的がはっきりするというか。

215 名前:209 mailto:sage [2009/11/04(水) 10:42:19 ]
ついでにRailがgenerateで吐くコードを調べてみました。

シングルクォート
flash[:notice] = 'Profile was successfully created.'
<%= link_to 'New profile', new_profile_path %>

ダブルクォート
format.html { render :action => "new" }

どっちも使ってる…。どういう基準で分けてるのかさっぱり分からない。
ただ適当なのか、何かちゃんとした理由があるのかな。

216 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:49:28 ]
アトリビュートとみなせる(小さな)文字列はダブルクォートであることが多い
ハッシュのキーとか値とか、配列の短い文字列とか

あるいは生成されて埋め込まれた文字列とか

irb> 1.upto(10).to_a.map{|e| e.to_s}
["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] ←この部分をコピペ

深い意味は何もない
打ってる途中で
「あーシングルクォートでよかったなーと思ったが修正面倒なのでこのままダブルで閉じる未来の俺訂正よろしく」
とか普通なので気にしてたら禿げるぞ

217 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 11:08:33 ]
String#inspect が吐く文字列がダブルクオートというのは意外と
強い動機になるよね。

218 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 14:10:01 ]
>>209
>個人的にはシングルクォートをメインにして、"my name is #{name}"のような変数展開を使う場合のみダブルクォーテーションにしています。

このルールでいいと思う。あとは ¥n をいれるときとか。

219 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 18:36:31 ]
そのルールに何の意味も無いだろ
面倒だし両方の表記が入り乱れることになるだけ
なんでダブルクウォーテーションだけで済ませるのが嫌なんだ?

220 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 18:48:35 ]
変数(というか、式)展開やバックスラッシュ記法の有効化は、すこし機能が強すぎる
その機能を使用しないのなら、そもそも機能が有効になっていないほうが好ましい

めんどいからダブルでいーじゃん、というのでももちろん構わないし
スクリプトに直接リテラルで書くぶんには実際上の問題は何もないが、
慎重にシングルとダブルを使い分けるという姿勢は賞賛されるべき

221 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 18:51:52 ]
>>219
>なんでダブルクウォーテーションだけで済ませるのが嫌なんだ?
べつに嫌いとまでだれも言ってないけど。>>213が書いたように、シングルクォートを使うことで、
式展開もなにもありませんという意思表示をしているだけ。
なんでこんな曲解するやつがいるんだろうね。

222 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:03:43 ]
Railsマンセーな俺は>>215>>216辺りを見てシングルを主に使っていこうと決めた
アトリビュートというかシンボルに置き換えられるのようなケースではダブルを使ってる気がする



223 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:01:01 ]
Windows環境だとパス区切りがバックスラッシュな関係で
文字としてのバックスラッシュを扱いたい場合は多いな
>>210 とは逆に、バックスラッシュが解釈されるせいで「ん?」と思う場面のが多い

224 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:19:40 ]
考え方は>>220に同感だけど、職場ではダブルクォートで統一されてる。
ネットで拾うサンプルも大抵ダブルクォートだ。
単純に、ダブルクォートで文字列を表現する言語が多いという理由だけの気がする。
コーディングスタイルにおいて慣習ってのは大きな要素なんじゃないかな。
○○にすべきだ、という100%正しい解釈があったとしてもそれが慣習に反していれば採用するのはやっぱり難しい。

225 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:30:24 ]
100%正しい解釈などない

226 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:31:39 ]
>あったとしても

227 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:34:04 ]
信念を持って慣習を破るのは悪いことじゃないな。

228 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:34:12 ]
Rubyの場合%表記使うことも多いからダブルクォートに対するこだわりなんか全くない

229 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:34:35 ]
無意味な仮定ってことだろ

230 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 22:10:31 ]
> 慣習
こないだ '%s' % str したらMatzの写真で踏み絵させられた
わかる人にはわかるらしい

ちなみに初めてのRuby的には
「後述のエスケープ文字や式展開を含まない場合、
一重/二重のどちらの引用符を用いるかは好みの問題です」(p.58)
だって

231 名前:デフォルトの名無しさん [2009/11/04(水) 22:50:02 ]
Ruby1.8.7でsqlite3を使いたく、環境を構築しました。

sqlite3-ruby(1.2.5)
dbi(0.4.3)
dbd-sqlite3(1.2.5)
sqlitedll-3_6_19

上記の環境でDBI経由だと
ERROR DBI::InterfaceError: Unable to load driver 'SQLite3' (underlying error: uninitialized constant DBI::DBD::SQLite3)

というエラーが発生します。
ドライバが見つからないと言うようなエラーだと思うんですが、全部最新です。
何が原因でしょうか?

232 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 23:50:35 ]
ドライバを入れろ



233 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:06:05 ]
>>231
×SQLite3
○sqlite3
db = DBI.connect("DBI:sqlite3:#{filename}")

234 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:44:56 ]
>>231
ごめん>>233は間違い
うちは
db = DBI.connect("DBI:SQLite3:test.db")
で接続できた
ドライバはdbd-sqlite3で Unable to load driver だから
sqlite3自体がインストールされてない?

235 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 02:13:52 ]
>>209
>個人的にはシングルクォートをメインにして、"my name is #{name}"のような変数展開を使う場合のみダブルクォーテーションにしています。
>というのもHTMLと一緒にrubyを使うことが多く、HTMLタグの値にダブルクォーテーションを使うからです。

正解

236 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 04:09:19 ]
%!hogehoge! 使うべさ

237 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 06:34:11 ]
俺はハッシュの値とかも含めて基本全てシングル使ってるぞ
変数展開したい時だけダブル
これで特に困ったことは無い
空文字が''になるので、他人にソース見せる時に突っ込まれることはあるが。

238 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:22:34 ]
ダミアン先生によると空文字は、%{}にしたほうがわかりやすいと

239 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:36:12 ]
まあ''と"と"'と'''と''''と'"'と""と'"'と'''''の区別は咄嗟にはつけにくいからな
いちばんわかりやすいのは String.new だが

余談だが俺は配列も Array.new だしハッシュも Hash.new だ
自分から [] や {} を使うことはゼロ

240 名前:231 mailto:sage [2009/11/05(木) 08:39:55 ]
>>232
>>231に書いた以外に必要なドライバがあれば
ドライバ名を教えてください。

>>234
一応 gem search を実行すると全部インストールされているんですが
sqlite3-ruby をインストールするときにリンク先のような状態になったのが
気になりました。
ttp://www.rubylife.jp/railsinstall/other/index1.html
そのほかはバージョンもそろえてるしSQLite3の本体も入ってるし、
もうどうすればいいのか・・・

241 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:51:14 ]
新しく配列作る時って Array.new と [] って一般的にどっちがいいとかある?
好みの問題くらいでどっちでもいい?

242 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:12:05 ]
初期値の存在しないふつうの空の配列を作るならどっちでもよい

10万個くらい Array.new と [] が書いてあったら、後者のほうがパース完了は遅いとは思うが



243 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:23:13 ]
>>240
DBI.available_driversで使えるドライバがわかる
そこに"dbi:SQLite3:"が無ければインストールに失敗してる

244 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:06:41 ]
初期値が無い場合は
var = Array.new
初期値がある場合は
var = ["hoge", "hogege"]
って感じだな。
特に理由は無いけどこういうパターンで書く人が多い気がする。

245 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:13:01 ]
[] でいいじゃん

246 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 10:36:36 ]


247 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 14:25:20 ]
Array.new, Hash.new はメソッド呼び出しが入るので遅い。

248 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 15:03:37 ]
>>244
そうかあ?初期値がなくても [] と {} を使うほうが多いと思うけど。
デフォルトの初期値が必要な場合だけHash.newとかを使うんじゃないか。

249 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 16:51:24 ]
配列からある値を一つだけ削除って簡単にできる?
- とかdeleteだと複数あった時に全部消えちゃう

250 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 16:58:30 ]
delete_at

251 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 17:01:43 ]
>>249
簡単にはできない
若いの1個だけ消したいと予測

arr = ["a", "b", "c", "b", "a"]
arr.delete_at(arr.index('b'))
p arr

["a", "c", "b", "a"]


252 名前:231 mailto:sage [2009/11/05(木) 18:21:11 ]
>>243
driver = DBI.available_driversしてみました

ArrayEmptyでした orz=3

一度アンインストールしてインストールし直しても同じです
どうやればインストール成功するんでしょうか(´;∀;)



253 名前:249 mailto:sage [2009/11/05(木) 18:50:35 ]
>>250,251
なるほどね見つけてから_atで消すのね
ありがとう

254 名前:231 mailto:sage [2009/11/05(木) 19:19:05 ]
sqlite3-ruby dbi dbd-sqlite のバージョンを下げたりしてみたけど
やっぱりドライバが認識されませんでした
同じコードとドライバでも1.9.1だと動きまする・・・

255 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 19:24:01 ]
インストール手順を示さないとアドバイスしようがないと思ふ

256 名前:231 mailto:sage [2009/11/05(木) 20:05:44 ]
解決しました。いや、解決はしてませんが、ドライバが原因では無いことはわかりました。
NetBeans6.7.1でデバッグをすると「ドライバがないぞゴルァ」って言われるんですが
コンソールから実行すると何事もなかったように動きます。

どうもお騒がせしました。

257 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 21:30:32 ]
えええええw

258 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 22:32:30 ]
コンソールから使ってるRubyとNetBeansから使ってるRuby
が違うんでないかい?


259 名前:231 mailto:sage [2009/11/05(木) 22:41:01 ]
>>258
自分もそう思って確認したんですが
インストールされてるバージョンは1.8.7-p72と1.9.1-p243の二つしかなく
コンソールもねとびーんも1.8.7-p72を使ってました。
ねとびーんのGemマネージャにも、きちんとドライバは登録されていました。
その後も色々試していますが、未だに原因がわかりませんです。

260 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 01:03:10 ]
printf("%d %d\n", n, n+1)の出力にマッチする正規表現は書けますか?

261 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 01:29:25 ]
動的に正規表現を生成するのでも構わないのなら

n = 3
"%d %d\n" % [n, n + 1] =~ Regexp.new("%d %d\n" % [n, n + 1]) #=> 0


ところで以下には驚いた。勉強しなおさないとだ

'%d %d\n' % [n, n + 1] =~ Regexp.new('%d %d\n' % [n, n + 1]) #=> nil
"%d %d\n" % [n, n + 1] =~ Regexp.new('%d %d\n' % [n, n + 1]) #=> 0

262 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 01:40:43 ]
>>261
s = '%d %d\n'
p /#{s}/ # /%d %d\n/と等価

文字列として\nが解釈されなくても、正規表現をパースする段階で解釈される

似たような話としては、String#gsubで引数に\を渡そうとすると
ダブルクォートの場合はエスケープの都合で\の個数がキモいことになる



263 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:17:32 ]
>>262
サンクス。完全に間違って理解してた
> 文字列として\nが解釈されなくても、正規表現をパースする段階で解釈される
よく覚えとくよ

で、>>261でなんではまったかと思ったら普段あまり使わないRegexp.new使ってるからだった
'\n' にマッチする正規表現をリテラルで作ろうとしたら /\\n/ って直感的に書けるけど
Regexp.new で作ろうとすると相当キモイことになるね

264 名前:デフォルトの名無しさん [2009/11/06(金) 06:35:26 ]
質問です。
さくらインターネットのスタンダードプランでrubygemをインストールしたのですが,
gemコマンドを打ち込んでも
gem: command not found
と、出てしまいます。
これはインスト失敗しているのか、単に環境設定がうまくいってないのか…。
ご教授願います。

インスト時には
wget rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar zxvf rubygems-1.3.1.tgz
cd rubygems-1.3.1
ruby setup.rb --prefix $HOME

で、
RubyGems installed the following executables:
/home/hogehoge/bin/gem18
と出ていました。






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

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

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