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


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

Rubyについて Part 34



1 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:34:28 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 33
pc11.2ch.net/test/read.cgi/tech/1223709050/

過去スレ・関連スレは >>2-

75 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:01:02 ]
>74
お前が氏ね

76 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:00:03 ]
つーか普通 module を include するのって抽象クラスを継承するようなイメージじゃないのか?
どう考えても class で書いたメソッドの方を優先して欲しいんだが。

77 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:04:11 ]
いや思いっきり優先されてるだろ
p C.ancestors #=> [C, M, Object, Kernel]
は C にメソッドがない場合にのみ M の中を探す

module M
def msg; "Rubyはうんこ"; end
end
class C
def msg; "Ruby最高"; end
end
class C; include M; end

puts C.new.msg


Ruby最高

78 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:06:07 ]

 ・ 既存のメソッドと同じ名前のメソッドをincludeしたとき super がどうなるか
 ・ クラスを含んだモジュールをincludeしたときそもそもどうなるか

というのがわかりにくいわぼけーという話だな

79 名前:76 mailto:sage [2009/02/06(金) 15:59:11 ]
>>77
いやいや、実際そうなってないということではなくて、>>72とかの「期待通り」って、
いったい何を期待しとるんだという話。
Ruby の include のイメージで
>>78の「既存のメソッドと同じ名前のメソッドをincludeしたとき」
みたいな言い方は、普通出てこないんじゃないの? と思うんだが…

80 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:32:17 ]
>>79
つ ヒント:普通じゃない

81 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:31:50 ]
1.9.1文字コードがどーたらこーたらで既存のコードがうごかねー。
そういうのは2.0でやってくれよ。

82 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:35:47 ]
文字コードなんて1.4でやっとけよ

83 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:56:02 ]
>>81
1.9.0では動作してたものが1.9.1では動かないというのなら姉さん事件ですのでぜひ報告を



84 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:02:12 ]
2.0でやってたらやってたで「3.0でやってくれよ」と言ってるんだろうな

85 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:02:59 ]
なにいってるかわからない

86 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:52:48 ]
なるほど
ありがとうございました

87 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:30:26 ]
どれだー
どれに対する礼なんだー

88 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:38:44 ]
きっと神にだよ。

89 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:33:07 ]
なるほど
ありがとうございました

90 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 06:13:20 ]
>>84
少なくとも1.9.1でやるよりは10倍マシ

91 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 07:27:49 ]
複雑だと思うならつかわなきゃいいんじゃねーの?
なんでアホはあるもの全部使わなきゃ気がすまねーの?

92 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:02:17 ]
誰と会話してんの

93 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:07:18 ]
# -*- coding: utf-8 -*-
を行頭に挿入すりゃいいだけだろ?何を恐れることがある



94 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:33:29 ]
>>92
彼は今チャンピオンベルト目指して脳内キャラとスパー中です。

95 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:55:55 ]
>>94
それってつおいの?

96 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:58:32 ]
昔、机の上で左手と右手を戦わせてたときのことを思い出した

97 名前:デフォルトの名無しさん [2009/02/07(土) 14:59:40 ]
それなんて色川武大

98 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:08:03 ]
きっと神とだよ。

99 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:08:55 ]
ありがとうございました

100 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:26:06 ]
なるほど

101 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:36:53 ]
がんばれよ

102 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:57:37 ]
>>90
1.9って2.0のβじゃないの?
Rubyのバージョン付けはそういうルールじゃないんだっけ。

103 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:58:21 ]
1.9は1.10のβです



104 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:01:49 ]
>>102
元々はそういうルールでしたが、1.9.1からいきなり変わりました

今は1.9.0が開発版、1.9.1が安定版
それ以降はもうよく分からない

105 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:04:26 ]
>>104
なるほど、知りませんでした。

>>103
確かに。
2.0のβなら1.99でしょうね。

106 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:06:25 ]
>>102
2.0が当分先になりそうだから、
つなぎとして固まった仕様だけ出したのが1.9だったよーな

破壊的な変更のコストはどんどん増える一方ということを考えると、
ブロック内変数とかも含めて、
今のうちに変更しておくという決定は一理あるとは思う

107 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:10:00 ]
1.8と2.0の掛け橋が1.9で、1.8と1.9の橋渡しが1.8.7
ライブラリ作ってるのでなければ、しばらくは1.8.7を常用するのがよい
半年もすれば1.9.1対応ライブラリもぐんと増えよう
ライブラリ公開してる人はとっとと1.9.1入れて対応作業始めてくりゃれ

108 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:13:29 ]
>>107
今年中に1.8.8出るよ?

109 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:14:02 ]
>>108
またそんな夢みたいなことを簡単に信じるんだから

110 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:15:25 ]
>>108
うん、で、そのあとに続く言葉は何?
「だから1.8.6使い続けたほうがいい」?
1.8.8が出るなら今から1.8.7勉強して慣れたほうがよくないか?

111 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:35:19 ]
hpricot(why-hpricot)とmysql(elia-mysql)は
githubで公開しているgemなら1.9.1に入った。
githubのgemはオーナー名が入るのが好かんのだが。


112 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:44:48 ]
Hpricotの復権はあるのだろうか…

113 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:46:56 ]
>>112
Nokogiri はつまるとこ lib-libxml2 なんで、そのへんの不便を突けば並列使用は可能だと思う



114 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:41:37 ]
>>112
なんか、why の人の blog で
「nokogiri の方が速いとか言われてマジブルー。むかついたからパーサー書き直したYO!」
とかいうエントリがあがってた。試してないから速くなったのか知らんけど。

115 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:44:32 ]
速さ云々じゃなくてあの変態APIが(ry

116 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:56:02 ]
hpricotがなくっても _why の多芸っぷりは憧れる


117 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 18:39:21 ]
最近似たようなこと書き込みまくってる気がするんだが

module M
class C1; end
class C2; end
end

この場合、C1 と C2 に関係性を持たせることはそもそもできない?
たまたま含まれるモジュールが同じだけで、「知り合い」ではない?

M を改造して

module M_II
class C1; end
class C2; end
end

というものを作りたいんだけど

118 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:17:21 ]
>>110
1.8.7と1.8.8って何か変更あるの?
その時の1.9.1ってどうなるの?

119 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:22:25 ]
1.9という奇数バージョンは開発バージョンだから
2.0まで待った方がいいよ。

120 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:32:46 ]
間違った知識で何を言うか

121 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:43:53 ]
何年も継承されてるルールを変えられると困る

122 名前:デフォルトの名無しさん [2009/02/07(土) 19:52:42 ]
文字列処理入ると1.8より遅いのか...


123 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:54:20 ]
不安定版を一応脱した1.9.1が出た時点で、実質「1.9は開発版」という看板は終了だ
従来動作の1.8系列と、新動作の1.9系列という2つの括りになる
むしろ、次の開発版が無いのが気になる



124 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:56:08 ]
>>117
定数とか調べてコピーを作るメソッドを自分で作れ
Application.create とか

あと↓見てよく考えろ。クラスも定数である事を忘れるな
class A
 CONST = :A
 def pconst ; p CONST ; end
 def pselfconst ; p self.class::CONST ; end
end
class B < A
 CONST = :B
end
B.new.pconst #=> :A
B.new.pselfconst #=> :B

125 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:57:42 ]
話をループさせるの好きなんですね、わかります。

126 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:13:30 ]
>>117
> 「知り合い」ではない?
まあ、基本的には。
ネストでも継承でもない場合、基本的に他人。
データ作成クラスとデータ構造クラスとかを知り合い関係のまま再利用させたい場合は適当にネストさせとく。

class DataMaker; end
class Data; end
class SubData; end

という並列構造はそもそもあんましよくない。

127 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:21:54 ]
moduleインクルードすると嬉しいことって
クラスの多重継承の代わりになるってことだけですか?
なんならmoduleなんて排除してクラスの多重継承許しちゃえばよかったのに

128 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:29:31 ]
ClassクラスとModuleクラスを機能的に分けたときのついでなんじゃないかと最近思う

129 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:34:06 ]
>>126
ネストの意味のあるクラス名考えるのがとってもめんどくさいです

130 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:34:10 ]
moduleをファイル指定にするというのはどうだろう

module HogeHoge
class FooBar; end
end
と書いたファイルは名前がHogeHoge.rbでなくてはならない、と
して
require ForBar from "HogeHoge"
とかすんの。


131 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:52:54 ]
1.9系は全部開発版じゃないの? というのは私も思ったけれども、よく見るとRHG巻末に「1.9.0は開発版、1.9.1は安定版」書いてあるからかなり前から公表されていたと言える。
Matzがなにか2.0 featureをあれこれやりはじめたら、そのとき開発版と1.9系安定的開発版を分けますです。

132 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:56:11 ]
てか、単に脳内情報が更新されてない人がいるだけだ
わりと前に「末尾 0 のみ開発版」というのは発表されてたはず
あと、一般的命名法とかけ離れている、直感に反するポリシーだというのが(w

133 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:00:13 ]
>>119
1.9.1も開発バージョンで2.0.0も開発バージョンなんですよね
わかります



134 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:00:14 ]
Rubyの作者ってちゃんと働いてるの?
IBMとかに入って一度リリースエンジニアリングを学んできた方がいいと思うんだが。

135 名前:デフォルトの名無しさん [2009/02/07(土) 22:02:38 ]
1.9の開発版はこの先ずっと1.9.0なんか...
それとも1.9.1.0とか

136 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:10:56 ]
あの浅田真央でさえ不調になるとこんなもんだ

137 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:33:00 ]
どんだけ話をループさせるのが好きなんだよ、おまいらはw

138 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:37:21 ]
Rubyの安定版が1.9.1になった理由について
Matz自身が言及してる文章ってどこかにないかな? あったら教えて欲しい

139 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:38:20 ]
何で英語の方がドキュメント豊富なんだよ
日本で生まれたって理由だけでruby選んだのに
納得できん

140 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:41:35 ]
>>139
日本語ドキュメントが豊富だっていう理由で言語選ばなかったからだろ

141 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:45:55 ]
>>139
日本人があまりドキュメント作る気が無いから

142 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:47:17 ]
用途によってまた違うんだろうけど、日本語ドキュメントの質と量の総合で言うと、
Perl > PHP > Ruby >= JavaScript > Python くらいな気がする今日この頃。

143 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:04:33 ]
公式じゃなくても優良な書籍や解説サイトがあるPerl
公式以外が間違いだらけで公式しか頼れないPHP
公式があれば必要十分なPython



144 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:12:28 ]
Pythonの公式は情報量は多いのに、使いやすさが全く考慮されていないのが痛い。
PHPは公式の出来はとても良い。ただしGoogle検索で出てくる更新されていない公式のコピーサイトがうざすぎる。

145 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:32:49 ]
るびま25号出たー!
まさに今求められている記事のラインナップだ、素晴らしい

146 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:40:12 ]
python信者ってやたらruby嫌うよね?
職場のpython教の先輩方々がみんなrubyアンチだ
何なんだろね

147 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:41:30 ]
>>139
なにもかも、おまえがドキュメントを書かないせい。

148 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:41:39 ]
>>146
犬好きと猫好きみたいなもんだって誰かが言ったと最近どこかで見たが、このスレじゃなかったのかな

149 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:42:48 ]
isitruby19.com (Is it Ruby 1.9?) というサイトがあった。


150 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:55:41 ]
>>145
1.9スレではリンク張られてたな

151 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:08:25 ]
るびまからリンクされてたFiberの解説を見て
Fiberに対する興味が出てきたんだけど、有効な使い方がよく分からない

確かにThreadよりもシンプルだけど、使い方を探すのに悩む…

152 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 05:31:54 ]
Rubyの開発ってさ、いつ終了すんの?
早く開発完了してバグ取りと仕様固定化に
力入れてくんないと、怖くて業務に使えないんだけど。

153 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 06:45:38 ]
>>152
Python、PHP、Java
これらの言語の開発は終了しましたか? また終了する見込みはありますか?
それが答えです



154 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 10:30:32 ]
CもC++もC#も終わってないな
終わったのはVBとCOBOLくらいか

155 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 10:53:42 ]
COBOLも終わってないらしいぞ。
JIS規格の会議とか、最近でもあるし。


156 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:12:19 ]
>>153
Javaは終わってないけど、互換性はそれなりにキープされてるから
ちょっと違う。テスト不要とまでは言わないが、コード修正は不要なことが多い。

>>154
VBも終わってないぞ。文法が違うだけで、中身がほとんどC#と同じという
意味では「終わっている」のかもしれないが。

157 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:18:07 ]
Javaは「仕様が無い言語とか業務使用にありえないから」という理由だけで作られた政治的言語だろ
他の言語と比較するのはそれだけで場違いだ

158 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:39:54 ]
1.9.1でバイナリファイル(画像)を File.read で読み込んだら
data.encoding #=> #<Encoding:UTF-8>
みたいになるんだな。これが Encoding.default_external か。

data.force_encoding('BINARY') するのと、
Encoding.default_external = 'BINARY' するのと、
どっちが行儀がよいのだろう。

とここまで書いて IO.binread の存在を知った。


159 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:59:17 ]
gdgd

160 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:00:19 ]
Pathname#binreadないんだな。


161 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:16:19 ]
1.9.1(って書きづらいな。なんかコードネームでもつけてくれ)はUTF8でソースもテキストも書いとけばドツボにはまることもなくなるのかね。

162 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:20:57 ]
>>161
万事解決かどうかは知らないが、そうしない理由もないだろ。
今日日EUC-JPとか正直なんのメリットもないしな。

163 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:45:23 ]

 ・ システムがEUC-JPベースだ(オールドなLinuxとか)
 ・ Emacs のUTF-8 対応に許せない
 ・ ターミナルと UTF-8 の関係でイラつく

の 3つの場合が考えられまする



164 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:17:31 ]
そんなマイナー人種は、頑張って苦労するか日本語文字を使わないか
すればいいんじゃないかと。

165 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:19:16 ]
UTF-8 は日本語大体3バイトだしな・・・

166 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:23:44 ]
曖昧な幅のCJK文字とか死滅すればいいのに

>>165
UTF-8というかUnicodeにまつわる問題の多くは文字のバイト数に起因していない
的外れ

167 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:27:49 ]
def val(params = nil)
@val ||= ...
end

とか

def val(params = nil)
@val if @val
...
return @val = ...
end

とかいう、最近わりと市民権得つつある遅延評価風の処理についてなにか一言あれば

168 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:35:00 ]
>>167
irb とひじょーに相性が悪い
普通に書いてると、new した返り値が inspect で表示される瞬間に @val が確定してしまったりしてとてもめんどくさい

169 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:00:25 ]
>>166
単に容量増えるって問題だよ

170 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:59:29 ]
容量気にすんならMIME撲滅するべきだろ

171 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:00:41 ]
XML もですねわかります

172 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:07:37 ]
Rubyでそんなにシビアなもの作ってる人いるんだ。

173 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:09:58 ]
>>167
普通にキャッシュとか言ったほうがいいよ

>>168
評価されるタイミングで結果が変わるメソッドでは使うべきではない



174 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:12:41 ]
cache or memoize

175 名前:デフォルトの名無しさん [2009/02/08(日) 17:44:46 ]
>>167
rubyって遅延評価できるんだwww
見る限り遅延評価してるようには見えないが






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

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

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