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


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

Ruby 初心者スレッド Part 36



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インタフェースも一緒






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

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

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