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


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

Ruby 初心者スレッド Part 34



1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ]
プログラミング言語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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

579 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 04:13:51 ]
>>574
リストに吐き出して最後に結合

580 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:08:05 ]
Marshal.dump(obj[,port][,limit])を使って
データをグローバル変数に保存したいんですけど不可能ですか?


581 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:31:04 ]
質問の意味がわかりかねるねるねるね

582 名前:580 mailto:sage [2010/02/16(火) 07:38:37 ]
def save_bitmap
file = File.open("test.txt", "wb")
Marshal.dump(@data, file)
file.close
end
これだとtest.txt内に@dataを保存しますよね?
これをグローバル変数に保存したいのですが
def save_bitmap
file = File.open($data, "wb")
Marshal.dump(@data, file)
file.close
end
これじゃだめですか?


583 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:04:57 ]
$dataと@dataってどうなの

$data = Marshal.dump(@data) は違うの?というかこれなら
$data = @data でいいじゃん

584 名前:580 mailto:sage [2010/02/16(火) 08:36:03 ]
できましたありがとうございました
考えすぎていたようです

585 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:46:10 ]
というかグローバル変数使うなかっこ悪いから
トップレベルのローカル変数とメソッドの引数でデータの受け渡ししろ

586 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:55:45 ]
ディープコピーの常套手段ってやつか

587 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 09:16:12 ]
引数と返り値で充分なやり取りだと思えるかどうかには自覚と時間が必要

 ・ グローバル変数いらねえ
 ・ クラス変数使う必要ねえ
 ・ これインスタンス変数でなくてもいい

と感じるにはちょっと時間が要る
他人から言われてもえーって感じでピンとこない



588 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 11:36:08 ]
>>579
メモリ食いつぶした。
謝罪と賠償を(ry

589 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:39:42 ]
配列で指定した要素を一つだけ削除する命令ってないですか?
[1,2,3,4,5,1,1,1,1,1]
これの1を一つ削除して
[2,3,4,5,1,1,1,1,1]
にしたいんですが。delete(val)だと全部消しちゃいますよね。


590 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:48:27 ]
>>589
それなんかやたらよく聞かれるんだが、メソッド一発でやる方法は特にない

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

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

591 名前:589 mailto:sage [2010/02/16(火) 15:08:55 ]
def delete_learn_data(delete_id)
$game_system.golem_learn_data.each_with_index{ |value, i|
if delete_id == value
$game_system.golem_learn_data.delete_at(i)
break
end
}
end
とりあえずこれでいけました。ありがとうございました。

592 名前:デフォルトの名無しさん [2010/02/17(水) 13:47:36 ]
メソッドhogeの引数としてフォーマット用文字列と任意個の文字列を渡して
formatで整形した文字列を作りたいんだけど
hogeの引数はどんな形で渡したらいい?

def hoge(引数)
 s = format(引数1, 引数2, 引数3・・・)
end

以下のようにしたらsは1つの配列として扱われてformatに
too few argumentsと言われてしまいました
def hoge(f, *s)
 s = format(f, s)
end
hoge('%s %s', 'aaa', 'bbb')

593 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:50:15 ]
format(f, *s)

594 名前:デフォルトの名無しさん [2010/02/17(水) 14:53:03 ]
thx

595 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:23:25 ]
Rubyやってて良かったことを教えて下さい。

596 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:37:21 ]
自分用スクリプトでPerlを使わなくて済んだ
オブジェクト指向に触れてなんとなく理解した気になれた

597 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:47:09 ]
railsに尽きるなぁ
rails無かったら何の価値も無かった



598 名前:デフォルトの名無しさん [2010/02/17(水) 16:48:37 ]
ニワカ乙


599 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:00:24 ]
プッ
反論してみろよカス

600 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:34:43 ]
論に対してしか反論はありえない。

601 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:36:48 ]
mechanizeとnokogiri(hpricot)はなかなかいいライブラリだとは思った
あれら程手軽に使えるスクレイピングライブラリは他の言語では知らない

602 名前:デフォルトの名無しさん [2010/02/17(水) 17:46:35 ]
railsを作ってしまうような香具師がrailsが存在する前から評価してた言語ってだけで十分な気がする。


603 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:30:01 ]
でも他のスレでRubyの4文字を出すと馬鹿にされる

604 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:31:33 ]
>>595
Javaを使わなくて済むようになった・・・まあRubyじゃなくてもいいんだけど。

>>602
なんでやねん。そんな理由がだれをどう嬉しくするのさ。

605 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:00:29 ]
>>603
難解な言語技術を修得しているという自負が
平易な言語に対する無体な態度につながるんだろうか

606 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:14:05 ]
>>605
Ruby厨でぐぐれ

607 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:35:35 ]
Java厨の嫉妬は凄いよな。



608 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:37:40 ]
・ Rubyをちょっと齧ったばかりで興奮して他スレで煩いRuby厨
・ 生まれてこのかたJavaしか知らない自称中級者

を混ぜると危険というかひたすら面倒

609 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:39:16 ]
そろそろ隔離スレ行こうね

610 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:40:08 ]
・ Rubyには興味がないがRubyに関わった遣り取りにウンザリしてもう排除したいと思ってる人

を追加

というか本スレでやれ


611 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:41:40 ]
変態同士仲良くしろよ

612 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:14:40 ]
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

613 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:18:26 ]
>>612
いつも思うんだけど
この人だれ??

614 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:21:18 ]
ミスターつこうた

615 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:33:15 ]
>>613
こいつにレスしたのお前だけだぞ

616 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:39:16 ]
申し訳ごめんなさい。

617 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 01:44:24 ]
絶対にゆるさない



618 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 19:54:41 ]
StarRuby今落としたんですが
この板にスレッドが無いのが気になりました。
ゲーム開発用であんまり需要無いんですか?


619 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:03:48 ]
ありませんというかそもそもゲーム製作専用系は板違い

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
ttp://pc11.2ch.net/test/read.cgi/gamedev/1207069887/

620 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:07:28 ]
>>595
手軽に短くかっこよくツールが書けること。
あと、Rails

621 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:11:38 ]
Pythonから来ました。
自分用のプログラムを書くときに、クラス定義のときに組み込みクラスを
オーバーライドするのが怖いので、トップレベルにMyAppみたいな名前の
モジュールを作ってから、その中にクラスを定義しているのですが、
これはRuby文化に反するのでしょうか?

また、Pythonのように、組み込みクラスはすべて、Builtin::String, Builtin::Arrayみたい
になってたらなあ、と思ったのですが、何故こうなっていないのでしょうか?

622 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:36:19 ]
適当なモジュールでくるむのは普通に行われているし、実質推奨になっている
まあ、それ自体が被る可能性もあるが

> 何故こうなっていないのでしょうか?
めんどくさいから

…まあ、オープンクラスっても限度あんだろ、とはみんなちょっと思ってはいる
ある意味初期の見通しミスをずるずる引きずってるわけで

623 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:57:05 ]
本当のところはMatzに聞かなきゃ分からんが、
デメリットを勘案の上でオープンクラスを選択したのは間違いないわけだから
設計意図どおりだと思うけどなあ

オープンクラスの影響範囲を押さえ込む名前空間システムが
検討されてるらしいが、いつ実装になるやら

624 名前:621 mailto:sage [2010/02/18(木) 21:59:30 ]
>>622
むしろ推奨でしたか。安心しました。有り難うございます。

トップレベルにすべての組み込みクラスがあるのは面倒くさいから。。。
実にRuby的だなと思いました(笑)。いいですね。

もし初期の見通しをひきずっているのなら、Ruby2.0なんてのが出る時には
改善されるかもしれませんね。

625 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:05:47 ]
いわゆる Std:: を使わないのはオープンクラス主義と反するからであるのは間違いない

626 名前:621 mailto:sage [2010/02/18(木) 22:08:53 ]
>>623
オープンクラスなのは、メリットがとても大きいと思うので気にならないのですが、
どうして、組み込みをすべてトップレベルにしてあるのかなと思ったのです。
自分用のクラスを定義するときには、組み込みクラスの名前はすべてすでに使われているわけで、
名前空間がクリーンじゃないなと。

> オープンクラスの影響範囲を押さえ込む名前空間システム
そんなのが実現したらすごそうですね。

627 名前:デフォルトの名無しさん [2010/02/18(木) 22:22:54 ]
selector namespace だっけ?




628 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:30:06 ]
python も
str = 'hoge'
みたいなことすると
あほなことになるが

629 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:45:07 ]
それは__builtins__.strを上書きしてるわけじゃないから、
モジュール外に被害は出ないだろ。

630 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:20:07 ]
lambdaについて

lambdaはreturnがクロージャから戻り、また引数チェックを行うprocというところまで理解しました。
ですが、このlambdaメソッドはどのように定義されているのでしょうか?
引数チェックはなんとなくメタプログラミングでできそうな気がするのですが、returnの挙動を変える
なんてことができるのでしょうか?

Cで実装されているのかもしれませんが、もしRubyで実装するとすればどのようになるのか教えてください。

631 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:23:39 ]
クラスメソッドを定義しようとして
def Fixnum.bar
end
と書いたら
1.bar

NoMethodError: undefined method `bar' for 1:Fixnum
になります。どうすればいいんでしょうか?

632 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:22 ]
>>631
1.class.bar

Rubyのクラスメソッドは、その定数で表されるclassオブジェクトのインスタンスメソッドという程度の意味しかない

633 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:51 ]
クラスメソッドはインスタンスからは呼べないんじゃないの?
1はFixnumクラスのインスタンスだし。
とりあえず、クラスメソッドと定義しているわけだから
Fixnum.barとすれば動く。

もし、1.barという風に実行したかったのなら
クラスメソッドではなく、インスタンスメソッドを定義したかったのだという事になる。



634 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:35:49 ]
>>630
>このlambdaメソッドはどのように定義されているのでしょうか?
Proc.new

本当に理解したければBindingオブジェクトの知識が要ると思う

635 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:40:35 ]
インスタンスメソッドを定義したかったのでした

636 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:51:27 ]
>>635
それなら
class Fixnum
def bar
puts "bar"
end
end
と書いて、1.barとすればいい

637 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:53:33 ]
Fixnumにメソッド追加するのはおおむねキモいけどな
キモいと自分で感じるまではこれは仕方ない
便利に使うといい



638 名前:630 mailto:sage [2010/02/19(金) 01:54:53 ]
>>634
Proc.new == Kernel#procですよね?(Ruby1.9)

Bindingオブジェクトは雰囲気だけは分かります。どうか教えてください。
returnの挙動をどうやってメタプログラミングしたのかが知りたいのです。
すみません。

639 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:10:55 ]
あー何度もすみません。特異クラスがおおもとの疑問でした。(試行錯誤の中で>>631へ)
特異クラスの動作を見てみようと
a = 1
def a.foo
end
とすると
TypeError: can't define singleton method "foo" for Fixnum
となるのでどうすればいいのかなと

640 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:20:38 ]
>>639
俺もあまり詳しくないが、とりあえずFixnumとかSymbolとかは特異クラスが定義できない。
a = 1
b = 1
としたときにaとbのobject_idが同じ(aもbも同じオブジェクトを指す)になるのと関係あると思う。
String等その他大勢では
a = 'foo'
b = 'foo'
とするとaとbは違うオブジェクトを指すし、これらには特異クラスが定義できるはず。

641 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:21:31 ]
>>639
Fixnux/Symbol/Nil/True/Falseあたりは処理効率の都合で特殊な実装になってるから
その手の実験では避けた方がいい

642 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:23:12 ]
>>638
わああめんどくせえええ
一応ここはCで書いてあるはず
local_jump_error使ってるんじゃなかろうか
本スレ行き

643 名前:638 mailto:sage [2010/02/19(金) 02:28:13 ]
>>642
すみません。わああ眠れねええって感じでしたので(笑)。

うは、LocalJumpErrorですか。なんかニオイますね。
初心者なのに、変なところに首を突っ込んでしまったようです。

644 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:31:17 ]
分かりました。ありがとうございました

645 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:02:57 ]
RubyForgeってところでrubyインストーラー落とせると公式に書いていますが
rubyinstaller-1.8.7-p249-rc2.exe
これを落としたいのですが10Mに7時間とかかかるんですが
他に落とせる所は無いんですか?


646 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:50:54 ]
なんとなくRubyでゲーム書いてみたくなったんだけど
2Dで手軽にって感じだと何のライブラリ使うのがいいかね?

647 名前:デフォルトの名無しさん [2010/02/19(金) 10:24:06 ]
SDL
Miyako(SDL使用) 書籍あり
RPGツクール(古いか)
くらい?




648 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:27:01 ]
>>645
回線速度で割り算して妥当でないなら時間置いてやり直せ
10MBくらいのファイルなのはRubyならどこも同じ

649 名前:645 mailto:sage [2010/02/19(金) 10:33:33 ]
ブロードバンドスピードテスト 通信速度測定結果
www.bspeedtest.jp/ v3.0.0
測定時刻 2010/02/18 10:27:07
回線種類/線路長/OS:光ファイバ/-/Windows XP/-
サービス/ISP:-/-
サーバ1[N] 23.7Mbps
サーバ2[S] 25.8Mbps
下り受信速度: 25Mbps(25.8Mbps,3.22MByte/s)
上り送信速度: 17Mbps(17.6Mbps,2.2MByte/s)

これで7時間とかおかしいと思うんですがなんででしょうか
firefoxとか関係ないですよね
昨日の12時ぐらいにやっても同じだったんでなんででしょう

650 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:37:40 ]
>>643
何か目的があるの?
例えばthreadでeachのようなものを定義してreturnしたいとか?

651 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:41:16 ]
>>649
こっちは転送率通常
回線経路の問題かも

現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある?

652 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:04:06 ]
>>612
ぐぐっても見つからないんだが、どこにあるの?

653 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:06:45 ]
>>652
こいつにレスしたのお前が2番目だぞ

654 名前:645 mailto:sage [2010/02/19(金) 11:17:08 ]
他のPCでも試してみます
>現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある?
これの意味がよくわかりませんが初心者なのでテンプレ通り1.9.1やめて1.8.7落とそうと思ってます。
rubyinstaller-1.8.7-p249-rc2.exe ←これでいいんですよね?
star rubyってのをやりたいんですけどこれはrubyの拡張ライブラリ?っていう位置付けでいいんですか?

655 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:37:33 ]
しかしなんでわざわざRubyなんかでゲーム作ろうと思うんかね
「○○がRuby経由でもできるようっひょー」が目的であって、Rubyから○○を学ぶのには基本不適だろうに

>>654
arton.hp.infoseek.co.jp/indexj.html
こっちの入れれ

656 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:16:08 ]
$KCODE ='s'
p Dir.entries(Dir.pwd)
とやると
[".", "..","う\202\311", "しのり\202\361", "すず\202\310"]
こんなのが返ってくるのですが$KCODE以外に何をすれば日本語フォルダを扱えるのでしょうか?

WindowsXP SP3 Rumixで導入した1.8.7を使ってます

657 名前:645 mailto:sage [2010/02/19(金) 15:32:08 ]
activescriptrubyインストールできましたありがとうございます
hello_world表示できました
エディタがあるようですがRDEとかRDTがあるようですが
みたかんじRDEがとっつきやすそうにググったら見えたんですが
RDEでいいんでしょうか?




658 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:39:02 ]
あー、Shift_JISでも起こるのか
早めに改定出して欲しいなあ

>>656
内部的には普通に扱えてる
p は内容そのものではなく、画面に表示しやすいように整形してから表示する
しかもバグがあって最後に日本語文字があると必ず化ける
putsで表示してみ

659 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:40:50 ]
>>657
どっちも別にエディタじゃない気がするが、どうしてもどっちかを使いたいのならRDEでいいよ

660 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:12:36 ]
>>658
バグですか
こっちはこっちで勘違いしたことやってたので全く気づきませんでしたw
ありがとうございます

661 名前:デフォルトの名無しさん [2010/02/19(金) 21:30:25 ]
文字コードを変換して読み書きしてくれるFIleクラスのラッパーライブラリってありますか?
イメージとしては

SjisFileWriter.open(path, "utf-8") do |file|
 file << utf8string
end

とすると、sjisに変換して書き込んでくれるようなものを期待してます。
closeするまでStringIOに溜め込んで一気に変換しようとしたのですが、
データが大きくてサーバーがパンクするのであきらめました。

もしかしてコツがあって、こういうのは簡単に書けるものなんでしょうか?


662 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:35:25 ]
改行があるのなら、改行ごとに読み込んで改行ごとに文字エンコーディングを変換して最後に連結すればいい

663 名前:デフォルトの名無しさん [2010/02/19(金) 21:51:24 ]
1.9だと希望とほぼ同等のことが出来るんだけどね。

1.8の場合、文字の途中をどうするかといったことを考えずにやるなら
出力に使うメソッドをひととおりコード変換するようにオーバーライド
すればよいと思う。
writeだけのオーバーライドでいいのかな。


664 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:53:08 ]
>>661
1.8 と 1.9 で対処が変わってくると思うので Ruby のバージョン教えれ

665 名前:デフォルトの名無しさん [2010/02/19(金) 21:59:19 ]
>>662
Fileクラスの振りをしてそういうことをするには、どんな風なコードを書けばいいのでしょうか?

FasterCSVは内部で、
 @io << row.map(&@quote).join(@col_sep) + @row_sep # quote and separate

こういうことをやっているので、コンストラクタで@ioに渡してあげると
書き込みのタイミングでエンコーディング変換してくれる
Fileオブジェクトがあればいいなと思っています。


666 名前:デフォルトの名無しさん [2010/02/19(金) 22:00:39 ]
>>663, 664

すみません、リロードしてませんでした。
Rubyのバージョンは1.8.7です。


667 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:03:48 ]
これはひどい



668 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:04:38 ]
すいませんリロードしてませんでした
>>667>>663についてです

669 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:09:39 ]
これはひどい

670 名前:661 mailto:sage [2010/02/19(金) 22:10:20 ]
もしかしてこんなのでいいんでしょうか?動くかちょっと試してみます。

class SjisFileWriter < File
 def <<(str)
  str.kconv(Kconv::UTF8, Kconv::SJIS)
 end
end


671 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:12:03 ]
すいませんリロードしてませんでした
>>669>>668についてです

672 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:13:13 ]
これはひどい

673 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:15:56 ]
末尾再起スレでやれ

674 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 23:23:37 ]
なんなんだこの流れはw

675 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:25:28 ]
二次元配列的クラスを定義して配列の配列と透過的になるよう要素に
a[i][j]
のようにアクセスできるようにしたいんですがどうすればいいでしょうか?

676 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:26:07 ]
>>675
無理

…いや、2次元くらいなら無理じゃないんだが、
その見栄えを保持するためだけに計算する遅いクラスになるぞ
NArray の a[i, j, k] みたいな記法じゃだめですか


677 名前:デフォルトの名無しさん [2010/02/20(土) 17:59:39 ]
プログラマ三大美徳というものがありますが
Rubistにもそういったものがあるのでしょうか?



678 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:05:30 ]
誰かの発言に影響されるのは嫌い。

679 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:09:12 ]
>>677
なにもない
というか
> Rubist
というようなものがない
Railsやってる人とは仲悪いし

680 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:30:08 ]
Railist vs Rubyist

681 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:07:31 ]
>>676
ありがとうございました。
配列の配列ですでに書いてある奴をクラスに直したいなと思ったもので。

682 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:51:45 ]
> Railist
むしろレースウェイズと呼びたくなるファミスタ脳。

683 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:28:14 ]
Railsint(笑)
ポッポ屋でいいだろw

684 名前:682 mailto:sage [2010/02/20(土) 22:37:43 ]
今さら誤字に気付いた。レイルウェイズだな。
オリックスと近鉄が合併するって時にゲームファンの誰もが口にしたっけ。

685 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 02:19:19 ]
こんなコードを書きまんた
----------------------------------------
# test.rb
class Foo
 def initialize(&func)
  @func = lambda(&func)
 end
 def bar(x)
  @func.call(x)
 end
end
foo = Foo.new{ |x| return x**2 }
p foo.bar(2)
----------------------------------------

いごきました
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10]
$ ruby test.rb
4

いごきませんでした
$ ruby1.9 -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ ruby1.9 test.rb
test.rb:11:in `block in <main>': unexpected return (LocalJumpError)
from test.rb:6:in `call'
from test.rb:6:in `bar'
from test.rb:13:in `<main>'

どうして?


686 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 03:16:26 ]
>> 685
難いww
とりあえず、lambdaとprocの違いはreturnの挙動の違いだよな。
そのreturnの挙動を決めるタイミングが1.8と1.9で違うんじゃね?

687 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:22:09 ]
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/35167
ここらへんのか



688 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:53:49 ]
んじゃ1.8と1.9両方で美味しく動作する
foo = Foo.new{ |x| return x**2 }
p foo.bar(2)
を実装するにはどうしたらいいんだべ?

foo = Foo.new(lambda{ |x| return x**2 }
p foo.bar(2)
なら作れたけどラムダラムダ五月蝿い感がある。

689 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:03:02 ]
ブロックの中で最後に評価された式の値が暗黙で返るのを利用するのがエレガントだと思う

690 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:27:33 ]
仕事でlambda使うケースなんて滅多にないけどな

691 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:32:27 ]
class Foo
 def initialize
  @func = lambda
 end
 def bar(x)
  @func.call(x)
 end
end
foo = Foo.new{ |x| return x**2 }
p foo.bar(2)

イケルがなぜか
-:3: warning: tried to create Proc object without a block
と出る

692 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:52:51 ]
なぜかもなにもそのまんまの理由だと思うが

693 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:33:42 ]
>>692

class Foo
 def initialize
  @func = proc
 end
 def bar(x)
  @func.call(x)
 end
end
foo = Foo.new{ |x| x**2 }
p foo.bar(2)

だと警告がでないのはなんで?

694 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:36:28 ]
lambdaとproc(とProc.new)は処理が違う

695 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:38:29 ]
Rubyのめんどくさいとこベスト3に入るところだな
きちんとした解説ページとかないものか

696 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:12:28 ]
# ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
p lambda{return 0}.call #=> 0
p lambda(&lambda{return 0}).call #=> 0
p lambda(&proc{return 0}).call #=> 0

# ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32]
p lambda{return 0}.call #=> 0
p lambda(&lambda{return 0}).call #=> 0
p lambda(&proc{return 0}).lambda? #=> false
p lambda(&proc{return 0}).call #=> unexpected return (LocalJumpError)

1.9だとKernel.#lambdaにprocを渡すとprocが帰ってくるんだな
仕様なのかBUGなのか

697 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:14:30 ]
&lambdaは&lambdaの誤りね



698 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:44:02 ]
自分は組込みの仕事なのでCを使っているんだけど、
Rails以外で仕事でRubyを使う場合、どんなものを
作っているの?

699 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:13:17 ]
自分の効率アップ用途以外には使わない俺スクリプト
仕事に使う中間物の生成プログラム
社内オンリーの更新頻度が高い内製プログラム

Rubyソースコードを商品にすることはほぼ確実にない
Rubyスクリプトが作り出したものを売ったり配ったりすることも少ないかと

なくても無論なんとかなるしプロダクト自体には全く影響しないが、能率ががくっと落ちる
もちろん本質的にはRubyでなくてもよい
PerlやPython、JavaやC++(えー)で超速く安定に作れるならむしろそっちのほうがよい

700 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:23:18 ]
>>699
なるほど、製品レベルとなるにはまだ先のことですかね。
自分にとって現時点ではRubyは業務とは無縁の存在だけど
勉強はしておこう。

701 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:25:26 ]
プログラマーズベストフレンドという文言がそのまんまだな

言語オフィシャルレベルでこれを標榜してる傲ま…いや野心的なところは見たことがない
配布ライブラリなんかで言ってるところは少なくないんだけど
ttp://www.google.com/search?num=50&hl=en&lr=&q=%22a+programmer%27s+best+Friend%22

702 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:30:15 ]
> 製品レベルとなるにはまだ先のことですかね
永遠にないんじゃないかなあ、と最近思ってる
そういう方向には進化してない気がするし、製品を作ろうとしないほうがうまくコード書ける気がする
Eclipseがなくても製品は作れるが、ないと死ぬ、そんな位置にRubyが入り込むんじゃないかと

703 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:33:03 ]
matzもRubyは同僚に差をつける秘密兵器として使ってほしいとか
なんとか昔言ってたしな。

704 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:43:16 ]
Rubyに関わったせいで同僚と差がついてしまいましたorz

705 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:08 ]
Rubyでプログラミングしてると「何とかして面白いコードは書けないか」と、そこに注力して仕事が進まないんだが。
どうしてくれる!Matzは責任とれ!

706 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:35 ]
他社に差をつける秘密兵器だと思ってた時期がおれにもありました

707 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:58:44 ]
>>706
間違いじゃないけどね
全員がRuby相当のものを修めてる会社は強いはずだ



708 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:00:55 ]
しかしつまらんスレだな

709 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:03:43 ]
ま、ここはRubyの開発者が名無しで書き込むスレだからな。

710 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:13:20 ]
何かこうエロい話題は無い物か。

711 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:16:47 ]
おっぱいクラスとか作れば?

712 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:43:44 ]
>>710
このスレに何を求めてるんだw

713 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:45:02 ]
Rubyのアイコンが亀甲縛りに見えるぐらいしか思いつかない

714 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 01:33:59 ]
>>711
おまえのエロの限界はおっぱいまでなのか?
しかも虚構のおっぱいクラス

715 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:22:29 ]
エロい話題のところすみません
半年ほど前は普通にgem installできていたはずなのですが、つい最近gemを新たにupdate、installしようとすると以下のようなエラーが出るようになりました
$ sudo gem install hogehoge
ERROR: While executing gem ... (Errno::EEXIST)
File exists - /opt/local/bin/gem

環境はMac OS X(10.4.11)で、
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.5
- RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin8]
- INSTALLATION DIRECTORY: /opt/local/bin/gem/:
- RUBY EXECUTABLE: /opt/local/bin/ruby
- EXECUTABLE DIRECTORY: /opt/local/bin/gem/:/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-8
- GEM PATHS:
- /opt/local/bin/gem/:
- /Users/******/.gem/ruby/1.8
- /opt/local/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["gems.rubyforge.org/", "gems.github.com"]
- REMOTE SOURCES:
- gems.rubyforge.org/
- gems.github.com
です


716 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:28:35 ]
エラーが出るようになったのはわかった。で?

717 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:37:30 ]
/opt/local/bin/gem か /opt/local/bin/gem/ の権限がおかしいように見える



718 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:53:53 ]
>>717
opt/local/bin以下をls -lしたところgemは
-rwxrwxr-x 2 root admin 548 Feb 15 15:18 gem
となっていますがrootではなくユーザー権限の方がいいのでしょうか

719 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 04:06:02 ]
権限をユーザ名にしてみたり-rwxrwxrwxにしてみたりしましたがやはり状況は変わりませんでした
なんとなく
- INSTALLATION DIRECTORY: /opt/local/bin/gem/:
の部分が
/opt/local/lib/ruby/gems/1.8
になるべきなんじゃないかという気がしてきたので今後はそちらから攻めてみようと思います
/opt/local/bin/gemは実行ファイルなのでDIRECTORYっておかしいですよね…

720 名前:715 mailto:sage [2010/02/23(火) 04:53:36 ]
連投すみません
GEM_HOME変えたら直りました
昔入れたrailsとかも全部こっちに入ってたのでいつの間にか変更されてたみたいです
ご協力ありがとうございました

721 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 15:00:19 ]
オッパイクラス マダー?

722 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 22:20:30 ]
Ruby2.0まで待て






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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