1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:56:36 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
175 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:18:34 ] Ruby/Tkが学習コストとできることの兼ね合い上おそらくベストと思われるが、 Ruby初心者かつTkの知識がない人にこれが理解できるとはとーてー思えん。 せめてどっちかに習熟しててくれないと発散しすぎて無駄に大変だと思う。 変に分離性が高いので、 「ここからRuby」「ここからTkを呼ぶRuby」「GUI連携はTk独自でRuby無関係」 という… Rubyに慣れてると学びやすいという説に一票、あと>>173 。
176 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:22:54 ] Ruby/Tkは「いいよもうこれ全部Tcl/Tkで書いたほうがいいよ畜生」と自棄になってTclに戻らせようとする巧妙な罠
177 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:25:45 ] Windowsでいちばん簡単なのは「HSPでGUI作ってシェル経由でRubyスクリプトを呼ぶ」だと思う昨今
178 名前:120 mailto:sage [2010/03/26(金) 14:29:32 ] ところで、お前らの結論を教えて欲しいんだけど 結局、お前らは何だかんだ言ってGUIをやったことが無いんだな
179 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:31:52 ] なんだまだいたの
180 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:20:58 ] エグザイルみたいなもんか
181 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:35:15 ] >>153 同感 Ruby で無理して GUI やっちゃうと 環境依存になって結局後々苦労するのが見えてる Python でやっとけばびっくりするほど簡単にどこでも動く
182 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:39:34 ] 複数の言語を使うことを厭うのは損だよね
183 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 17:38:13 ] てすと
184 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:09:39 ] ruby で角括弧[]が browserForm = Form.new() [browserForm].each do |f| f.Text = 'hoge' end の様に使われているコードがあるのですが、この場合は どういう意味なのでしょうか?
185 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:11:57 ] array = [browserForm] array.each 〜 を省略して、生成と同時にメソッドコールしてるだけ
186 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:16:55 ] いちおう追記 質問のために書いたコードや操作対象が複数のときに一括処理する場合に備えているならともかく このコード自体はこれでいい browserForm = Form.new() browserForm.Text = 'hoge'
187 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:10:37 ] >>185 ありがとうございます。 おっしゃる通り一括処理で使われています。 ruby の理解が浅いため何となく分かった程度ですが、 brouseForm = Form.new() brouseForm.hoge = 〜 といういくつかの処理を f.hoge という形で見やすくしている と考えれば良いのでしょうか。
188 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:19:36 ] 見やすくっていうのも間違いではないけど ループや関数(メソッド)化して同じ記述を避ける(DRY原則)のほうかな puts "a" puts "b" puts "c" ["a", "b", "c"].each {|str| puts str } 3要素1項目ぐらいだから大差ないように見えるけど これが10要素5項目ぐらいになったらバカバカしいことになる つーかローマ字やめれw
189 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:20:37 ] ローワーキャメルケースとキャピタライズメソッドのコンボの恐怖 どっちもRubyの主流から外れてるので書くときの参考にはしないように 配列に関してはオブジェクトが「入ってる」という理解でいい (余裕があるならラベル入りの箱と考えるといいんだが) 箱からいっこ取り出すよ機能のeachで入ってるオブジェクト取り出して、 そのオブジェクトのメソッドを利用してる
190 名前:デフォルトの名無しさん [2010/03/26(金) 19:31:18 ] 確かに [very_long_variable_name].each do |v| … end で他の言語でいうletみたいなことはできるけど、普通は使わんなw
191 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 20:56:33 ] あれ、GUI論争ってもう終わったの? (コンパイルする方法がわからなくて途方に暮れながら)
192 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:02:29 ] Tkのスレッド対応みたいに突っ込んだ話になるとレスがつかないのに GUI論争するのっておかしい気がするな
193 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:03:35 ] そもそもここで「論争」なるものをしないで欲しいので
194 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:10:00 ] >>192 だってRubyのGUIでスレッドの話するのめんどくさいもん ネイティブのTkのスレッドとユーザーレベルのRubyのスレッドの両方の話せんといかん
195 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:13:35 ] rake教えてください 前処理が必要ないソース群と必要なソース群があるときruleはどう書けばいいんでしょうか? 下の例で、Bxのために前処理のルールをrule '.src' => '.pre'と書くと前処理が不要なAxまで前処理しようとします。 XはA1.out...An.out,B1.out...Bn.outに依存し、makeX A1.out A2.out...Bn.out -o Xで作成 A1.out...An.outはA1.src...An.srcに依存し、それぞれ makeOut Ax.src -o Ax.outで作成 B1.out...Bn.outはB1.src...Bn.srcに依存し、おなじく makeOut Bx.src -o Bx.outで作成 B1.src...Bn.srcはBn.pre...Bn.preに依存し、 makeSrc Bx.pre -o Bx.srcで作成 Ax,Bxはファイルが複数あることを示すため書いているだけで、ファイル名が連番ということではありません
196 名前:デフォルトの名無しさん [2010/03/26(金) 21:32:13 ] rule '.out' => '.src' rule /B.*¥.src/ => proc {|t| t.sub('src', 'pre') }
197 名前:デフォルトの名無しさん [2010/03/26(金) 21:44:15 ] 全部がBで始まるというのもないのか。 Regexp.union(FileList['*.pre'].pathmap('%n.src')) などと工夫してみて。
198 名前:デフォルトの名無しさん [2010/03/26(金) 22:06:43 ] 正規表現使ってまで rule に固執せずに FileList['*.pre'].each do |pre| file pre.pathmap('%n.src') => pre end のほうがベタだけどすっきり。
199 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:57:10 ] >>192 春だからな、仕方がないんだよ ここの人はプログラミングした事無いのに、 そこら辺の宗教戦争が好きだから
200 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:19:01 ] まだ>>120 が粘着してるのか
201 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:19:02 ] 知らないことを答えようとするとGUI否定の人みたいなのしか出てこないことになる 知らないことは見てるだけでいい
202 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:37:34 ] Ruby/Tkの中の人があれだけがんばってるのに GUI否定とかやられるとがっかりするよな GUIスレが立ったみたいだからそっちが機能してくれればいいけど難しいか
203 名前:195 mailto:sage [2010/03/27(土) 00:42:18 ] thx 単純には書けないんですね
204 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:44:34 ] >>202 どう言葉で表現してもそもそも初心者向けではないはずなのだが、どうもそこに引っかかってる人がいる模様 初心者にもできるべきだと考える理由って何だろうね
205 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:47:08 ] >>204 彼らはGUI肯定をしているわけではないのです ほんのちょっぴり、初心者であったときのことを忘れてしまっているだけなのです ここは初心者スレなのに、自分ができるからって相手もできると思ってしまってる
206 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:55:29 ] 初心者にも優しいとか散々宣伝してきたツケが回ってきてるだけだろ 自業自得だ
207 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:08:29 ] ルビーのアンチは嘗ての初心者
208 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:15:40 ] Ruby専用GUI pc12.2ch.net/test/read.cgi/tech/1269609576/
209 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:52:19 ] RubyにGUIは向いてないとか言って馬鹿にされたから、今度は初心者がどうのこうのって もうアホすぎて死んで欲しいわ
210 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:52:54 ] Linuxだからruby-gnome2で満足してるけど、 ruby-gnome2と呼べばいいのかruby-gtk2と呼べばいいのか悩むことはある
211 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 02:06:10 ] >>205 Rubyコミュニティそのままだな
212 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 04:00:11 ] 教祖がウィンドウズ使ってないからね。 信者もウィンドウズ使わずに過ごせばいいとしか思ってない。 ルビー使いたければ、教祖と同じデビアン使えば患部も目指せるかもよ。 pc11.2ch.net/test/read.cgi/linux/1267107714/ Debian GNU/Linux スレッド Ver. 63 pc11.2ch.net/test/read.cgi/linux/1154631461/ Debian原理主義者テラモエス pc11.2ch.net/test/read.cgi/linux/1162356771/ Debian原理主義者ペタキモス pc11.2ch.net/test/read.cgi/linux/1178083456/ 【ubuntu】Debianは終わった?【knoppix】 pc11.2ch.net/test/read.cgi/linux/1237256190/ Debian-Liveに決めました
213 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 08:53:31 ] Apollo ってなに?
214 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 08:55:02 ] 過去の過ち
215 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:07:11 ] 黒歴史になってんの?
216 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:13:04 ] ビッグ・ボンバーズみたいなもんだ 5年遅かったスペシャルマンと5年早かったカナディアンマンのコンビ
217 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:24:16 ] あれはRubyもいいけどDelphiもね!というキャンペーンの一環だった気がする Delphiは言語自体はよかったんだけどねえ 過去形で話さなければならないのがつらい所 黒歴史ではない ただの過去の遺物 Delphiのコンポーネントの知識があるなら選択肢になるかと思う
218 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 11:11:47 ] >>208 いきなりクソスレ ワロタ
219 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:47:11 ] class C def a … end def b a.scan(re) end def re /…/ end end というのを rspec とかでテストしたいです a メソッド(と re メソッド)に依存してる b メソッドのテストはどうすればいいですか? a がいくつかの値をとる場合の b のテストを書きたいです b のテストで必要になるような値を a に返させるような初期値を与えるべきですか? それとも全メソッド引数で渡すようにするべきですか?
220 名前:デフォルトの名無しさん [2010/03/27(土) 15:04:59 ] c = C.new c.stub!(:a).and_return('ほげふが') c.stub!(:re).and_return(/ふが/) c.b.should ...
221 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:58:47 ] >>205 オタクの悪いところだよなぁ 俺はわかるから、分からないお前らがだめなんだよ みたいな クソ根性論だよ
222 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:02:32 ] >>221 誰もそんなこと言ってない気がするんだが。
223 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:45:29 ] ちょっと聞きたいんだけど、 >>[1, 2, 3].each do |i| >> puts i >>end >>[1,2, 3].each { |i| puts i } この二つを実行すると同じ結果が出てくるけど 書き方が違うだけ(『do〜end』が『{〜}』になった)って事でいいのかい?
224 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:50:36 ] >>223 そこに疑問持つくらいならまとまった解説をきちんと読んどいたほうがいいぞ ちなみに回答はYES do … end は { … } のブロックに置き換えることができる 全く似ていないものに begin … end があるがこれは置き換えができない { … } は Hash リテラルを記述するのにも使用されるがこれを end つき構文に置き換えることもできない
225 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:55:35 ] >>224 うn、ありがとう&ごめん 本とか買わずにリファレンスだけ読んでて、唐突に.each doとか出てきて 『each』と『each do』って二つあんのか!ってびっくりしてしまってな
226 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:01:57 ] do で始まって end で終わるものだけだな end で終わるならなんでもカーリーブレースで置き換えられると思ってしまう人が結構いるので注意 どちらかというと do の存在のほうに注目してほしいんだが、なぜか end にばかり目が行く模様
227 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:21:11 ] Runnable.new { public void run(){ //適当な内容 }} javaではこのようにクラスをオーバーライドすることができますが、 Rubyでこのような事をやるにはどうすればいいんですか?
228 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:33:09 ] Rubyではクラスのオーバーライドはないと思う ただの定数にクラス定義(とメソッド定義)が入ってるだけだから、 継承するだけで別のクラスオブジェクトになれるはず 元クラスの動作を変更せずに安全にメソッド追加したいだけなら クラスを継承してからクラス定義を再オープンしてdef追加するかオブジェクトにextendでいいんじゃね
229 名前:227 mailto:sage [2010/03/27(土) 20:42:46 ] >>228 1つのメソッドをオーバーライドできればいいんです しかも、そのクラスは1回しかインスタンス化しません なのでわざわざ、面倒なことはしたくないんです
230 名前:デフォルトの名無しさん [2010/03/27(土) 20:46:35 ] 特異メソッドを使うといいと思う obj = Runnable.new def obj.run puts "foo" end
231 名前:227 mailto:sage [2010/03/27(土) 20:54:42 ] >>230 特異メソッドにそんな使い方があったとは 単純にクラスに属すメソッドの定義だと思っていました ありがとうございます
232 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:56:33 ] >>230 うひょうこの定義のしかた超きめえ今度から使おう 素直に extend する人用 module RunExtender def run; @run; end end r = Runnable.new r.extend(RunExtender) r.run
233 名前:デフォルトの名無しさん [2010/03/27(土) 21:00:57 ] >>231 発想の順番からいうと、特定のインスタンスだけで使えるように 定義するのが特異メソッド。 で、RubyのクラスってのはClassクラスのインスタンスだから、 その特異メソッドはいわゆるクラスメソッドの位置づけに相当するということ。
234 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:05:09 ] ていうか>>219 のもこれで用済まないかね
235 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:33:45 ] 普通のメソッドから特異メソッドにアクセスできないみたいですが、 どうにかなりませんか?
236 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:43:16 ] >>235 >>231 と仮定すると、どうにもならない そもそも所属が違うから、特異メソッドの存在を知らないインスタンスメソッドは特異メソッドにアクセスできない そうでないのなら、特異メソッドは new されたオブジェクトではなく new するのに使った Class オブジェクトの持ち物なので self.class.hoge で使え
237 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:44:57 ] >>236 thx
238 名前:デフォルトの名無しさん [2010/03/27(土) 22:45:24 ] できるよ。 irb> class Object; def hello; hello2; end; end irb> o = Object.new irb> def o.hello2; puts "hello"; end irb> o.hello hello
239 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:52:12 ] 配列にはattr_writerでアクセッサを指定することはできないんでしょうか?
240 名前:デフォルトの名無しさん [2010/03/27(土) 22:53:26 ] >>239 どういうメソッドが欲しいの?
241 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:02:07 ] メソッドがほしいというより使い方が知りたいのです attr_writerを指定すると読み書き両方ともできなくなったので 根本的に配列にattr_readerやwriterを使うのは間違いなのですか?
242 名前:デフォルトの名無しさん [2010/03/27(土) 23:05:09 ] えーと、 class Array attr_reader ??? # ここに何書いたの? end
243 名前:デフォルトの名無しさん [2010/03/27(土) 23:07:14 ] たとえば、配列にhogeという書き込み専用属性を作りたければ、 class Array attr_writer :hoge end a = [] a.hoge = 10 a.instance_variables #=> [:@hoge] のようにできるけど。
244 名前:239 mailto:sage [2010/03/27(土) 23:08:53 ] こういう風にしました readerArray = Array.new(3, 0) attr_reader :readerArray
245 名前:239 mailto:sage [2010/03/27(土) 23:17:04 ] 質問のしかたが悪くてすみません・・・ こういう感じだとクラス内の配列は読み取りや書き込み専用にはならないのでしょうか class Foo def initialize @readerArray = Array.new(3, 0) @writerArray = Array.new(3, 0) end attr_reader :readerArray #ダメ attr_writer :writerArray end
246 名前:デフォルトの名無しさん [2010/03/27(土) 23:32:41 ] >>245 オブジェクトを作ってみる。 > f = Foo.new #=> #<Foo:0x000001010e23b8 @readerArray=[0, 0, 0], @writerArray=[0, 0, 0]> @writerArray 書き込みアクセサで書き換える。 > f.writerArray= [1,2,3] #=> [1, 2, 3] 読み出しアクセサはない。 > f.writerArray #=> NoMethodError: undefined method `writerArray' for #<Foo:0x000001010e23b8> リフレクションで取得は可能。 > f.instance_variable_get(:@writerArray) #=> [1, 2, 3] @readerArray 書き込みアクセサはない。 > f.readerArray = [10, 20, 30] #=> NoMethodError: undefined method `readerArray=' for #<Foo:0x000001010e23b8> リフレクションで書き換えることは可能。 > f.instance_variable_set(:@readerArray, [4,5,6]) #=> [4, 5, 6] 読み出しアクセサで取得。 > f.readerArray #=> [4, 5, 6] attr_reader しかしていないと言っても、それで得られたオブジェクトが読み取り専用になっているわけではないので、 > f.readerArray.pop #=> 6 > f.readerArray #=> [4, 5] のようなことは起こる。
247 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:03:47 ] Rubyにアクセサという機構はない attr_* は同名のインスタンス変数を返す(か代入する)メソッドを自動で作成するだけ def arr @arr end def arr=(a) @arr = a end メソッド定義を自力で書くのを避けたいときに使うだけで、特別な動作はしない def を書く代わりにできるだけ
248 名前:239 mailto:sage [2010/03/28(日) 00:11:30 ] >>246 なるほど アクセッサで指定した配列オブジェクトそのものは読み、書き専用になるけれども、 その中身のwriterArray[0]とかはwriterArrayのオブジェクトから読み込みができないので 各要素オブジェクトにもアクセスできなくなるので、writeArray[0] = 1 はできなくなり readerArrayの場合は、readerArrayの読み込みはできるのでreaderArray[0]にアクセスできるけれども readerArray[0]の要素オブジェクト自体は読み取り専用じゃないので readerArray[0] = 1 ができてしまうんですね 大変参考になりました >>247 やっぱり横着してはならないのですね 夜遅くまでありがとうございました
249 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:15:03 ] ぶっちゃけ、attr_ はもう名称変えたほうがいい こんだけ広まったらもう混乱の元にしかならん
250 名前:デフォルトの名無しさん [2010/03/28(日) 00:15:55 ] rubyでmail送信したいんだけどXPHomeeditionではできない? できれば携帯におくりたいんだけどできるかな? ただしSMTPサーバがない状態で。 VB.NET & XP Professionalなら簡単にできたんだど。 だれかそのあたり詳しい人いますか? 条件は XP Home Edition 携帯にmail送信。(異常時に) SMTPサーバなし(外部サーバ通じてではできるらしい。VB.NET & Professional なら不要)
251 名前:デフォルトの名無しさん [2010/03/28(日) 00:15:58 ] f.writeArray[0] は f に writeArray というメソッドがあってそこから 返ってくる配列に添え字アクセスする意味。 attr_writer :writeArray では writeArray= というメソッドしか 作られないからダメってことですな。
252 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:20:48 ] どうでもいいけどLCCで書くのやめて欲しいなあ Rubyではスネークケースで書いて欲しい そういやスネークケースって言葉ぜんぜん流行らないよね write_array みたいな全小文字でアンダースコア区切りの書き方ね
253 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:24:46 ] >>250 require 'net/smtp' 使い方はマニュアル読め
254 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:25:48 ] >>252 禿げ同。 初心者がスネークケースで質問するスレ立ててよw
255 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:29:24 ] >>252 Rubyではあらゆる点でアンダースコア区切りが主流だと思って ライブラリのトップファイル名をアンダースコア区切りにしたら叩かれたでござる require 'hoge_lib' ではなく require 'hoge-lib' となるように作ろうね require しないファイルはアンダースコア区切り
256 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:30:49 ] 個人的にはピリオド区切りが好き
257 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:59:00 ] 私初心者だけど クラス命はFooBar メソッド命もFooBar 変数名はfoo_barって感じで書いてた こういうの嫌われるの?
258 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:00:21 ] >>257 間違えた クラス名 => FooBar メソッド名 => fooBar 変数名 => foo_barでした
259 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:03:37 ] >>255 マジか。アンダースコアで作っちゃった。 でも、active_recordとかもアンダースコアだし、いいよね? ちなみに、その指針みたいなのどっかに書いてある?
260 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:16:19 ] >>258 Rubyではメソッドを呼ぶ行為とローカル変数を呼ぶ行為は字面で区別しない LCCを使用するのは特定の外部ライブラリのラッパーとかの特殊用途向け メソッド名と変数名は全部小文字でアンダースコア区切りが普通 ちなみに大文字メソッド名でも定義はできるし動作もする(ただしレシーバ必須で self.Hoge 等と呼ぶ) 余談だが日本語でもできる(文字エンコーディングに注意) >>259 そもそも active_support なのか active-support なのか activesupport なのかわかりにくいから 新しいメソッドはもうまとめようぜという話になったと記憶
261 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:21:58 ] こんなとこでどうでもいい宗教論争吹っかけんなよ糞うざいから
262 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:25:50 ] >>261 別に従わなくてもいい 全部のメソッド名を日本語にしても構わない DSLで自分のルールを作るのさえ自由だ end を } にするように書き換えてコンパイルすることを別に止めはしない ただ、それは孤児になる
263 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:00:57 ] Java が 1.1 系列になるときに、クラス定義の規則や、命名規則を厳格にすることで、 JavaBeans が成立し、開発環境でそれらを扱えるようになった。 マウスのD&Dで、イベント定義をしたり。 引数なしのコンストラクターを定義して、 setter/getter とか boolean は isProperty() にするとかそんなの。 命名にも、そういう実益があればいいんだけど、単にスタイルの問題だと従う意味が分からない。
264 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:13:14 ] 教祖が適当に決めてるのが現状だしな。 perl互換にしたがる傾向が強いが。
265 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:24:29 ] >>263 Rubyは本当に本当に自由に書くことができるので、逆に記法が散逸してしまったのだな スタイルというよりはデファクトの決定 読めない上に入力方法もわからない外国語UTF-8クラス名の外国語UTF-8メソッドを使いますとか言われても困る rubygems は gem install のインストールディレクトリ名と require のファイル名を別個にすることができるので たいそう混乱した これは Hoe や Jeweler のサポートで軽減されてきている 別に従わなくてもいい 特に外部に公開しない場合は 公開するような場合でも、別に守らなくても構わない ただし、それに伴って何か不利益を被ったとしてもそりゃ自己責任で 俺と違うやり方の世界のほうが悪いんだと叫んでくれ
266 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 08:12:01 ] jrubyのライブラリはネイティブな実装ですか?
267 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 09:54:00 ] 「RubyはGUIに向かない、Pythonにしとけ」ってのは、どういうこと? Pythonには、LinuxでもMacでもWindowsでも動くことができるGUIライブラリが標準で用意されてるんでしょうか。
268 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:04:22 ] というかRubyのGUIは全部間借りなのよ Ruby/TKはTcl/Tkというものを使ってて、Tkの勉強が必要 Ruby/GTKはGTKの、Ruby/QtはQt(Qt4)そのものの勉強をする必要がある Rubyの文法とか考えとかそういうものとは全く別のものを勉強しなければならない 「GUIはRails並に別」と言われる所以 「わざわざRubyから呼んで苦労背負い込むくらいなら 直接そのプログラミング言語を学んで直接起動させたほうがマシじゃね」という
269 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:07:09 ] > Pythonには、LinuxでもMacでもWindowsでも動くことができるGUIライブラリが標準で用意されてるんでしょうか。 これに全く答えてないわけだが。 Pythonには間借りでないGUIライブラリがあるわけ?
270 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:15:22 ] この際だから はっきり言ってしまうと Pythonの場合 wxPythonならwxWidgetsは覚える必要はないし PyQtならQtを覚える必要がない TkinterだけはTcl/Tkを知らないと使えないとは思うけど
271 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:35:23 ] Tclの難しいところ(変数/コマンド置換、制御構文のブレース等)はRubyがやってくれるから Tcl知ってる人がTk使えるようになるのと Ruby知ってる人がRuby/Tk使えるようになるのに必要な勉強の量は大差ないだろう 問題はLinuxでRuby/Tkが使えるようになるまでだけど RubyでGUIやりたいって言ってる人はたいていWindowsユーザなんじゃないか だとすればActiveScriptRuby入れてActiveTcl入れるだけでRuby/Tkが使えるようになるから PythonでTkinter使うのとたいしてかわらない とういわけでRubyでGUIスレの発展を切に願います
272 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:39:34 ] Ruby/Tkが学習距離的にいちばんマシではある 「とりあえずウィンドウとかボタンとか入力欄とか出せればなんとかなんじゃね」 というコンセプトがRuby寄りだ 「Tcl/Tkでいちばん難しいのはTcl」という本末転倒な症状もRubyなら軽減 が、Rubyを一通り学んでからGUIに手を出すという順番自体は重ねて推奨
273 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:48:22 ] >>270 それは>>269 の答えになってるの?それともただの独り言?
274 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:50:05 ] >>273 半分くらい答えになってるんじゃね?真偽は置いておいて。 というか何故そんなに喧嘩腰なんだ
275 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:54:18 ] wxPythonなんかも結局wxWidgetsのマニュアル見ることになるから あんまりRuby/Tkなんかと変わらないよ その辺はどこのGUIインタフェースも一緒