Ruby 初心者スレッド Part 50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/07/29(日) 14:26:28.92質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 49
http://toro.2ch.net/test/read.cgi/tech/1336507487/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0792デフォルトの名無しさん
2012/12/14(金) 20:14:27.84> ↓こんな感じで書きたい
> begin
> raise :hoge if hoge
> raise :fuga if fuga
> rescue :hoge
> puts "うわー"
> rescue :fuga
> puts "ぬわー"
> end
元がコレだからな
なんで例外使いたいんだか
0793デフォルトの名無しさん
2012/12/14(金) 20:26:11.930794デフォルトの名無しさん
2012/12/14(金) 22:53:54.040795デフォルトの名無しさん
2012/12/14(金) 23:03:50.62attr_reader :sym
def initialize(sym)
@sym = sym
end
end
class Symbol
alias old_match ===
def ===(obj)
return old_match(obj) unless SymbolException === obj
obj.sym == self
end
end
def raise(*args)
Kernel.raise *args unless args.length == 1 && Symbol === args[0]
raise SymbolException.new(args[0])
end
begin
raise :hoge
rescue :fuga
p "fuga"
rescue :hoge
p "hoge"
end
こんなの実装できるとかRuby変態だろ…
0796デフォルトの名無しさん
2012/12/15(土) 00:57:15.80>こんなの実装できるとかRuby変態だろ…
偽装Lispだからな。
0797デフォルトの名無しさん
2012/12/15(土) 01:02:50.15おまいらなら、余裕でRuby GOLDが取れそうだな。
0798デフォルトの名無しさん
2012/12/15(土) 02:12:28.77なんでもかんでも重複を省こうとする
アホちゃうかと
読みやすさ、メンテのしやすさ、手間、バランスを考えろ
0799デフォルトの名無しさん
2012/12/15(土) 02:32:23.51そこが分かってない。
0800デフォルトの名無しさん
2012/12/15(土) 05:33:45.21def doya
if a == 1# えー
|| b =~ /hoge/ # びー
|| c !~ /moge/ # しー
|| d.empty? # でー
|| !e.nil? # いー
then
puts "わーい"
else
puts "ぐはあ"
end
end
とか書けないんだ。
0801デフォルトの名無しさん
2012/12/15(土) 05:35:48.83一行で書けるブロックコメントも無いしなぁ
def doya_sub
if a == 1 || b =~ /hoge/ || c !~ /moge/ || if d.empty? || !e.nil?
puts "わーい"
else
puts "ぐはあ"
end
end
じゃあ↓こうする?
こりゃりたーんりたーん五月蝿いなぁw
def doya
puts doya_sab ? "わーい" : "ぐはあ"
end
def doya_sub
return true if a == 1# えー
return true if b =~ /hoge/ # びー
return true if c !~ /moge/ # しー
return true if d.empty? # でー
return true if !e.nil? # いー
return false
end
0802デフォルトの名無しさん
2012/12/15(土) 07:13:54.44はい、Ruby的には判断できませぬ
インデントとか揃わなくてかっこ悪いとたいへん不評なのですが
if
cond1 || # when 1
cond2 || # when 2
cond3 # when 3
then
のようにorを後ろに書いてくだされ
0803デフォルトの名無しさん
2012/12/15(土) 07:25:33.12if cond1 || # when 1
cond2 || # when 2
cond3 # when 3
then
0804デフォルトの名無しさん
2012/12/15(土) 19:21:50.57groovyと比較するとbegin-endの方が目に優しいね
0805デフォルトの名無しさん
2012/12/16(日) 01:30:47.96記号含有率を下げると同時に、`波括弧を目立ちやすくする
という設計意図があるらしい
0806デフォルトの名無しさん
2012/12/16(日) 04:28:35.10トークンとして長くて大きくて実質"予約語"として命名余地を圧迫してることは否定しないが、使用中の見易さそのものは大差ねえよ
0807デフォルトの名無しさん
2012/12/16(日) 04:32:17.380808デフォルトの名無しさん
2012/12/16(日) 08:49:25.760809デフォルトの名無しさん
2012/12/16(日) 12:49:58.30スクリプトから特定のバージョンを指定で実行するようにしたい時は
#!/Users/username/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
とかしないといけないんでしょうか。
これだとバージョンを上げるとスクリプトを修正しないといけないので、
#!/Users/username/.rvm/rubies/ruby-1.9
とかで指定できて、rvmで自動的に最新の1.9系へのシンボリックリンクがはられる、
みたいのができると便利だと思うんですけどできないですか?
0810デフォルトの名無しさん
2012/12/16(日) 13:24:54.53rvm に 1.9系の最新 みたいな概念はないんじゃない?
0811デフォルトの名無しさん
2012/12/17(月) 04:53:24.51定数のように値を後で変更できない配列やhashを作成することはできませんか?
0812デフォルトの名無しさん
2012/12/17(月) 05:28:33.09irb> a.freeze
irb> a << 3
RuntimeError: can't modify frozen array
irb> p a
[1, 2]
ただ、実際のところはそれほど強制的な効果はなく、わりと嫌われてもいる
ユーザーに値を変更して欲しくないのなら、マニュアルにそう書くか、そもそも自己責任で放置するほうがよい
0813デフォルトの名無しさん
2012/12/17(月) 06:04:06.74変更したらうまく動作しない可能性があるのも「当たり前」
「これを外部から変更されたらプログラムが誤動作するので変更を禁止したい」
とか過保護または過敏に考える必要はない
0814デフォルトの名無しさん
2012/12/17(月) 06:57:23.260815デフォルトの名無しさん
2012/12/17(月) 06:59:51.340816デフォルトの名無しさん
2012/12/18(火) 00:14:43.70Railsのソース見てもfreezeぐらいたくさん出てくるのに。
0817デフォルトの名無しさん
2012/12/18(火) 04:35:32.860818デフォルトの名無しさん
2012/12/18(火) 11:15:16.40こういうのじゃダメなの?
class << FOO=Object.new
def bar
1
end
def baz
2
end
end
0819デフォルトの名無しさん
2012/12/18(火) 19:37:56.040820デフォルトの名無しさん
2012/12/19(水) 11:32:58.13class Counter < BasicObject
def initialize
@count = 0
end
def plus(n)
@count += n
end
def method_missing(*a)
@count.send(*a)
end
end
みたいな感じのクラスを作って思い通りの動作は得られたのですが、
インスタンスの.classがFixnumになってしまうのがどうにも・・・
他にうまい実装方法ありませんかね?
0821デフォルトの名無しさん
2012/12/19(水) 12:17:38.57ancestorsは? kind_of? は? instance_methods で plus が出ないけどいい?
ということで選んで移譲するのがいいように思う
てゆーか Object や Module のメソッドを使いたいなら BasicObject の直接継承なんてやってはいかんぜよ
0822デフォルトの名無しさん
2012/12/19(水) 12:59:51.22class Counter
attr_reader :count
def initialize
@count = 0
end
def plus(n)
@count += n
end
end
こういうクラスがあったとして
counter = Counter.new
counter.count #こうじゃなくてcounter単体で@countの値を得たい
つまり.countを省略したいと言うだけのことなのです
委譲を使って下記のようにも書けたのですが・・・そういうことではないんですかね?
class Counter < DelegateClass(Integer)
def initialize
super 0
end
def plus(n)
__setobj__ self + n
end
end
0823デフォルトの名無しさん
2012/12/19(水) 21:58:40.90pでの表示はinspectとか、文字列に埋め込んだりするとto_sとかが呼び出されて変換されますが
足し算などでは勝手に何かメソッドを呼んでくれたりはしないんでしょうか?
0824デフォルトの名無しさん
2012/12/19(水) 23:57:44.76class C
# C.new + 10 #=> 110
def +(other) 100 + other end
# 10 + C.enw #=> 110
def coerce(n) [n,100] end
end
0826デフォルトの名無しさん
2012/12/20(木) 22:53:23.660827デフォルトの名無しさん
2012/12/21(金) 01:29:03.32ruby ファイル名.rb で必要な情報一覧はLinuxコンソール上から叩くと取得出来ています。
これをブラウザ上にテキスト形式でどの様に表示させればいいのか解らず、sinatraと言うフレームワークもためしましたが上手く行かず、、、
多分凄い簡単な気もするのですが全くわかりません。
テキストにしたいと言う理由は実行結果をjson形式の書式に無理やり変えている為です。require jsonは利用してません。DBは利用してません。
プログラミング自体初心者です。。
0828デフォルトの名無しさん
2012/12/21(金) 02:14:25.800829デフォルトの名無しさん
2012/12/21(金) 02:17:30.67とりあえず、ここを嫁。
http://www.sinatrarb.com/intro-jp.html
んでhttp://localhost:4567をWebブラウザでアクセスしてうまくいってそうなら、
次は、↓みたいにparamsってHashの変数を使うように書き換えて再起動して、
# myapp.rb
require 'sinatra'
get '/' do
return '嫁は' + params[:yome] + '妹' + params[:imouto]
end
↓でアクセスして引数が参照できたら、
http://localhost:4567/?yome=morisama&imouto=rikka
あとは好きにいじって行け。
あとHTTPの勉強が少し要ると思う。
0830デフォルトの名無しさん
2012/12/21(金) 02:24:11.23有り難うございます。
:4567で起動はしてるのですが、Linuxのコンソール上には結果は出ていてエラーもありません。
ですがブラウザは真っ白な状態になっていてソースを表示しても何も入ってないと言う感じです。
スクリプトの結果をコンソールと同じ様にしたいだけなのにそれがどうしても出来ません。
0831デフォルトの名無しさん
2012/12/21(金) 02:30:02.59ちなみにコードは
get '/' do
ここにまるごと張り付けてます。
end
ハッシュを利用しないといけないのであればなぜそうなのかが公式見ても理解出来ません。。。
0832デフォルトの名無しさん
2012/12/21(金) 02:47:36.880833デフォルトの名無しさん
2012/12/21(金) 02:56:23.28コンソールへの出力にputsとか使ってるんだろう?
putsは引数の文字列をlinuxコンソールに出力するメソッド(本当は違うけど)
今現在コンソールに出力されてる文字列をブラウザに送るにはどうすればいいかは
829に書いてくれてあるのをみればわかるだろわかるよなわかってくれよそんくらい
0834デフォルトの名無しさん
2012/12/21(金) 03:26:47.76get '/' do
return "森夏ちゃんエロい"
end
とかいて、表示したいもんを文字列にしてreturnで返せ。
そうしたらブラウザで
http://localhost:4567/
にアクセスすると"森夏ちゃんエロい"が表示されるんだよ。
0835デフォルトの名無しさん
2012/12/21(金) 03:51:48.91│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0836デフォルトの名無しさん
2012/12/22(土) 14:51:40.51s = gs.accept()
s.puts("あ")
でクライアントに"あ"が送信されますが送信文に改行\nを加えるとそこで送信文が終わってしまします
つまりs.puts("あ\nい")とするとクライアントは"あ"しか受信してくれません
なんとかなりませんか
0837デフォルトの名無しさん
2012/12/22(土) 14:58:50.35http://doc.ruby-lang.org/ja/1.9.3/method/IO/i/gets.html
0838デフォルトの名無しさん
2012/12/23(日) 00:52:07.77皆さんどうしていますか
0839デフォルトの名無しさん
2012/12/23(日) 01:41:22.82exit も打てなくて C-c も使えないということ?
じゃ、GUIのタスクマネージャから終了させる
コマンドラインだったら、別の DOS プロンプトから tasklist で
実行時期が早めの DOSプロンプト(cmd.exe)の pid を調べて kill する
0840デフォルトの名無しさん
2012/12/23(日) 08:32:59.15嘘を教えるな
irb.exe もしくは ruby.exe の pid を調べて kill する
0841839
2012/12/24(月) 00:28:12.80フォローありがとう
0842デフォルトの名無しさん
2012/12/28(金) 11:02:17.08してrubyでメールを送ることに成功したのですが、宛先がgmailのときだけ
/usr/lib/ruby/1.8/net/smtp.rb:942:in `check_response': 553 5.7.1 <[email protected]>... Relay operation rejected (Net::SMTPFatalError)
from /usr/lib/ruby/1.8/net/smtp.rb:911:in `getok'
from /usr/lib/ruby/1.8/net/smtp.rb:854:in `rcptto'
from /usr/lib/ruby/1.8/net/smtp.rb:835:in `rcptto_list'
from /usr/lib/ruby/1.8/net/smtp.rb:833:in `each'
from /usr/lib/ruby/1.8/net/smtp.rb:833:in `rcptto_list'
from /usr/lib/ruby/1.8/net/smtp.rb:654:in `sendmail'
from ./mailtest.rb:26:in `sendmail'
from /usr/lib/ruby/1.8/net/smtp.rb:526:in `start'
from /usr/lib/ruby/1.8/net/smtp.rb:463:in `start'
from ./mailtest.rb:25:in `sendmail'
from ./mailtest.rb:68
となって失敗してしまいます。対処法をご存知のかたは教えて下さい。
0843842
2012/12/28(金) 11:51:38.09smtpの認証パラメータを設定していなかったのが原因でした
0844デフォルトの名無しさん
2012/12/31(月) 07:06:44.40test01
うんこ
うんち
う○こ
のように書かれているとします。
このうち「う○こ」を「うんこ」に置き換えたいのですがどうすればいいですか?
ファイルに直接変更を加えるということです。
0845デフォルトの名無しさん
2012/12/31(月) 10:37:49.710846デフォルトの名無しさん
2012/12/31(月) 11:02:01.60例
1.ファイルを一時ファイルにコピーする。
2.もとのファイルの名前で新しいファイルをつくる(書込み用)
3.一時ファイルを1行ずつよんで、該当する部分を変更して書込み用ファイルに出力する。
0847デフォルトの名無しさん
2012/12/31(月) 11:13:30.77文字列中で pattern にマッチした最初の部分を文字列 replace で置き換えた文字列を生成し返します
gsub(pattern, replace)
文字列中で pattern にマッチする部分全てを文字列 replace で置き換えた文字列を生成し返します
リファレンスマニュアル
0848デフォルトの名無しさん
2012/12/31(月) 11:15:02.140849デフォルトの名無しさん
2012/12/31(月) 11:17:08.53rubyで考えるよりも早いんじゃない
0850デフォルトの名無しさん
2012/12/31(月) 11:18:17.520851デフォルトの名無しさん
2012/12/31(月) 18:59:24.83>>847の方法を使う必要がある
フィルタ的に使うのに意外と
手間がかかるよねrubyは
0852デフォルトの名無しさん
2012/12/31(月) 19:26:52.360853デフォルトの名無しさん
2012/12/31(月) 20:07:43.050854デフォルトの名無しさん
2012/12/31(月) 20:09:58.73Windows版なんて聞いたことないし、あったとしても
どこの馬の骨が作ったかわからないフリーソフトレベルだろうから
大事なテキスト処理は任せられないなあ
多くのユーザーに揉まれたUnixツール群は偉大だ
0855デフォルトの名無しさん
2012/12/31(月) 20:36:15.570856デフォルトの名無しさん
2012/12/31(月) 21:38:07.260857デフォルトの名無しさん
2012/12/31(月) 21:44:25.90windowsでコンパイルすればいいだろ。バイナリしか提供されないノンフリーソフトじゃないんだから。
0858デフォルトの名無しさん
2012/12/31(月) 22:07:57.600859デフォルトの名無しさん
2013/01/01(火) 00:42:03.470860デフォルトの名無しさん
2013/01/01(火) 03:45:47.57死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
死ねゴミ共が
0863デフォルトの名無しさん
2013/01/02(水) 18:17:46.23俺も今そこで手が止まってる
nokogiriで特定の動的ページから複数のサイトをランダムにスクレイピングしたくて
パースする時にファイルの宣言文を見てエンコードする文字コードを自動で決めてくれるnokogiriの仕様に依存してるわけだけど
shiftjisエンコードされてて機種依存文字が入っていた場合だと何故かエンコードエラーが出るんだよなー
解決策として
・nokogiriが使ってるiconvを機種依存文字対応のものにする
・Mechanize経由でパースすれば多分大丈夫
みたいのが調べて出てきたけどiconvってそもそも何ぞや?
標準添付か組み込みのライブラリで解決できる方法は無いんか?とか
理解しないといけないことが多すぎて何か腑に落ちなくてもやもやイライラしてる
三が日までに何とかしないと社内で無能扱い確定だ
年明けに何でこんなことやってるんだろ…
0864!omikuji
2013/01/02(水) 18:19:55.280865デフォルトの名無しさん
2013/01/05(土) 10:17:04.79海外 Python
何でこんな中途半端なRubyなんて使ってるクズがいるんだろうな
0866デフォルトの名無しさん
2013/01/05(土) 10:21:05.96Ruby厨がMacBook持って萌えアニメやOSS信仰してるあたりで反吐が出る
iphoneいじってRuby会議ですか?
くだらねー小さい技術ネタで盛り上がって何も生産性のない話題っすよね
railsもオワコンだし
Rubyはオワコンなんだよ
その現実を受け止めよう
現実が変わることはない
0867デフォルトの名無しさん
2013/01/05(土) 11:34:12.67ここでそうやっていくらdisっても、現実は変わらないよw
現実を受け止めようw
現実が変わることはないw
0868デフォルトの名無しさん
2013/01/05(土) 13:13:22.730869デフォルトの名無しさん
2013/01/05(土) 18:34:26.78http://tinyurl. com/9w97424
0870デフォルトの名無しさん
2013/01/06(日) 17:04:45.070871デフォルトの名無しさん
2013/01/06(日) 17:05:16.480872デフォルトの名無しさん
2013/01/06(日) 17:24:46.140873デフォルトの名無しさん
2013/01/06(日) 17:25:26.680874デフォルトの名無しさん
2013/01/06(日) 17:25:57.720875デフォルトの名無しさん
2013/01/06(日) 17:27:08.680876デフォルトの名無しさん
2013/01/06(日) 17:42:53.520877デフォルトの名無しさん
2013/01/06(日) 17:43:40.640878827
2013/01/11(金) 21:44:54.56あれからちょっと手を動かせなくて久しぶりにレス頂いていた書き込みを読み結果が表示出来る様になりました。
式展開、インスタンス変数と言う言葉を学習しました。。。(恥
ですが表示結果の全てを出力したいのに一行しか出て来ない状況でどの様に記述するのが正しいのか、
もしくはもっと別の記述方法があるのかご指導頂きたく…
get '/' do
content_type :json
hoge = Rack::Utils.parse_query(@env['rack.request.form_vars'])
param = params['keyword']
keyword = param
escaped_keyword = CGI.escape(keyword)
doc = Nokogiri.HTML(open("http://www.google.co.jp/search?&num=10&hl=en&safe=off&client=safari&tbo=d&rls=en&source=lnms&tbm=nws&sa=X&tbs=qdr:h24&ie=UTF-8&oe=UTF-8&q=#{keyword}"))
start = "["
doc.search("div#search ol li").each_with_index do |li, idx|
href = ""
html = ""
link = ""
li.search("h3 a").each do |alink|
0879827
2013/01/11(金) 21:46:29.62href = alink.attribute("href")
URI.parse(href).query.split(/&/).each do |str|
strs = str.split(/=/)
link = strs[1] if strs[0] == "q"
"asdfasfdasfdafd"
end
html = alink.inner_html
end
next if "#{href}" !~ /^¥/url/
@@_beg ="{"
@@_dom = "¥"domain¥":¥"#{link.split("/")[2]}¥","
@@_url = "¥"url¥":¥"#{link}¥","
@@_t = "¥"title¥":¥"#{html}¥""
@@_clo = "},"
end
@@_null = "{¥"null¥":¥"null¥"}"
@@_close = "]"
res =[start,@@_url,@@_t,@@_clo,@@_null,@@_close]
end
笑っちゃう様なコードかもしれませんが、ここまで来るのに一苦労でした。難しいですね。
またこの状態だと1ペアの結果しか返せずコンソールに表示される10ペア全ての結果を返したい感じです…
0880デフォルトの名無しさん
2013/01/11(金) 22:27:09.41rackup すると
vendor/bundle/ruby/2.0.0/gems/rack-1.4.3/lib/rack/builder.rb:129:
in `to_app': missing run or map statement (RuntimeError)
って言われるんだけど?
あと、なんでクラス変数(@@....)を使う?
0881デフォルトの名無しさん
2013/01/11(金) 22:41:49.86はい、sinatraで試しています。
私の環境ではエラーが出てないのですが、、
クラス変数ですか、
インスタンス変数?を使ったつもりでした 汗
0882デフォルトの名無しさん
2013/01/12(土) 01:01:01.55URI.parse....each のブロックで @@_xxx に結果を放り込んでるけど、これが毎回上書きされてるから最後に解析された結果しか出力されな
い。
a = 0; 10.times { |i| a = i }; [a]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
にならないのと一緒で。
思い通りの動作にするなら
a = []; 10.times { |i| a.push i }; a
みたいに配列に放り込むようにすればいい
あと、今回の場合、クラス変数(@@foo)は勿論、インスタンス変数(@foo)も使う必要ないで
0883デフォルトの名無しさん
2013/01/12(土) 01:19:57.51有り難うございます!
ここのブロック周りはコピペを弄ってる状態に近くてアドバイス内容の意味までは的確に理解出来ませんが今から解読しながら頑張ってみます。
全く先に進めなかったのでこれでまた前進できるかもしれません。
0884827
2013/01/12(土) 01:35:21.11今ソースを見ながら考えてます。
ですが具体的にどこに何を書くのかさっぱり分らず
この感じだと今迄と同様一日以上悩んでもよく分らないパターンになりそうです。
もし宜しければ、参考になりそうなホームページ等あったら教えて頂きたいです。
今まで調べたキーワードは以下で、それに関連するページは一通り見てきました。
変数 式展開, インスタンス変数 展開, 配列展開, 連想配列, 配列 変数 展開
既に関連ワードがあったら見たけど理解出来てないと言う感じです。
何が分らないのかが分らない感じも多少あります。Orz.
0885827
2013/01/12(土) 04:50:36.39今日は寝よう。。
0886デフォルトの名無しさん
2013/01/12(土) 10:03:54.82何故それで動いてるのか1行1行理解して進まなきゃダメやで
0887デフォルトの名無しさん
2013/01/12(土) 11:07:23.43・ メソッドの作り方使い方
が入ってない気がする
行数が10行超すか、製作日数が1日を超したなら、一見冗長になったように感じたとしても最低限メソッドにするべき
def ユーザー入力からキーワードを抽出して返す
end
def ぐぐってHTMLを返す(keyword)
end
def HTMLをNokogiriでパースして生データにして返す(html)
end
def HTML由来の生データをHTML出力用に整形する(data)
end
def 受け取った文字列をRackで表示するだけ(output)
end
keyword = ユーザー入力からキーワードを抽出して返す
html = ぐぐってHTMLを返す(keyword)
data = HTMLをNokogiriでパースして生データにして返す(html)
output = HTML由来の生データをHTML出力用に整形する(data)
受け取った文字列をRackで表示するだけ(output)
なんも考えてないメソッド構成だが、これのいいとこはスクリプト作成中にいちいちブラウザから入力したりGoogleにアクセスしたりしなくてもいいように作るのが簡単なとこだ
# keyword = ユーザー入力からキーワードを抽出して返す
# html = ぐぐってHTMLを返す(keyword)
html = File.open(事前にHDDに保存していたHTMLファイル,'rb'){|f| f.read}
Nokogiriのパースの部分がうまくいってない気がするなら、スクリプト途中でdataをpなりputsなりして表示させて確かめ、exitで終了させればいい
data = HTMLをNokogiriでパースして生データにして返す(html)
p data
exit
0888デフォルトの名無しさん
2013/01/12(土) 12:23:29.46メソッドの作成はRubyの基礎覚えたら極力早いうちからやるのがおすすめ
0889デフォルトの名無しさん
2013/01/12(土) 12:27:16.51メソッドだらけになっちまう。せめて100行で
0890デフォルトの名無しさん
2013/01/12(土) 12:34:19.57「自作メソッド多過ぎ! わけわからん! 耐えられん!」とか思ってから勉強すると
実際の困難を解決する手段としてすんなり覚えられる
オブジェクト指向とかインスタンスとかそのへんの概念はとりあえず飛ばす
ひとまず、メソッドをまとめて一気に(または場合分けで)順次起動するシステムとしてクラスを使う
>>889
>>887も言ってるが、処理がごっついかどうかにもよるかと
自前で正規表現して自前で埋め込み文字列するだけならメソッドにする必要はないかも
今回のようにopen-uriでWebアクセスしたりNokogiriで面妖な抽出をしたりHTMLの変なデータ作ったりRackでDSL()する場合は
元スクリプトが10行程度でもいくつかメソッドにしたほうが気楽かもしんない
本当の"書き捨て"のスクリプトなんてのはそうそうあるもんじゃない、特に初学者
0891デフォルトの名無しさん
2013/01/12(土) 13:36:45.310892デフォルトの名無しさん
2013/01/12(土) 13:37:30.35俺なんて1行のメソッド山ほど作るが…
■ このスレッドは過去ログ倉庫に格納されています