Ruby 初心者スレッド Part 30
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/08/08(土) 08:21:23★注意★ 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つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0139デフォルトの名無しさん
2009/08/16(日) 05:47:380140デフォルトの名無しさん
2009/08/16(日) 06:04:490141デフォルトの名無しさん
2009/08/16(日) 06:16:40ホワイラーなんだと思う
0142デフォルトの名無しさん
2009/08/16(日) 06:31:12http://codepad.org/rgAGQvq5
別に代入する所もいらないし、trと違って任意の数だけ進められる
0143デフォルトの名無しさん
2009/08/16(日) 07:16:44なら1.0でも1.9でも動く
0144デフォルトの名無しさん
2009/08/16(日) 20:07:42使用している端末エミュレータの高さ(行数)を取得するには
どうすればいいのでしょうか?
0145デフォルトの名無しさん
2009/08/16(日) 20:09:55http://www.ruby-lang.org/ja/man/html/curses.html
0147デフォルトの名無しさん
2009/08/17(月) 00:26:17attr_accessor :foo
end
class Child < Parent
#...
end
という継承関係がある時、Childクラスではfooアクセッサーを
削除したいのですが、どうすればよいのでしょうか。
具体的に書きますと以下のように例外が発生してほしいです。
child = Child.new
p child.foo #=> 例外発生!
0148デフォルトの名無しさん
2009/08/17(月) 00:39:58ただのメソッドだ
ということを踏まえると
class Parent
attr_accessor :foo
end
class Child < Parent
undef :foo
end
Child.new.foo
NoMethodError: undefined method `foo' for #<Child:0xb7d42530>
from (irb):8
from :0
0149デフォルトの名無しさん
2009/08/17(月) 00:46:400150デフォルトの名無しさん
2009/08/17(月) 00:56:53http://codepad.org/QlJCG6Ry
できました。ありがとう
0151デフォルトの名無しさん
2009/08/17(月) 03:31:00ってか変数に型が無い言語で継承するって、実装の継承しか無いんだから
undefでも好き勝手にしたらいいと思う。
え?俺OO分かってない?
0152デフォルトの名無しさん
2009/08/17(月) 04:29:32特定のメソッドの有無に意味を持たせようとすること自体が邪悪
0153デフォルトの名無しさん
2009/08/17(月) 10:10:02このへんは後々尾を引いてくると推測
0154デフォルトの名無しさん
2009/08/17(月) 10:15:230155デフォルトの名無しさん
2009/08/17(月) 10:20:24アクセサは、作るもの(用意するもの)なんじゃねーの?
あるメソッドがアクセサかどうかというだけで。
0156デフォルトの名無しさん
2009/08/17(月) 10:45:20たとえば、Object#accessors でアクセサメソッドの一覧が返るとか
def hoge と def hoge= と attr_reader :hoge と attr_writer :hoge を全部定義しても
hoge() と hoge=() と hoge と hoge= で全部別個に使い分けが可能だとか
0157デフォルトの名無しさん
2009/08/17(月) 14:34:53http://www.ruby-lang.org/ja/man/html/FAQ_A5E1A5BDA5C3A5C9.html
> 5.4 オブジェクトのインスタンス変数を外から参照できますか
> 直接はできません。あらかじめそのオブジェクトにインスタンス変数を参照するためのメソッド (アクセサと言います)
> を定義しておく必要があります。たとえば以下のようにします。
メソッドとアクセサは同じレベルの概念じゃないだろ
0158デフォルトの名無しさん
2009/08/17(月) 14:44:570159デフォルトの名無しさん
2009/08/17(月) 15:05:41それが言語によってメソッドだったり属性参照式だったりするということじゃないの?
0160デフォルトの名無しさん
2009/08/17(月) 15:35:17おまえが理解できてないだけだ
0161デフォルトの名無しさん
2009/08/17(月) 16:08:040162デフォルトの名無しさん
2009/08/17(月) 16:11:43「定義の簡便のためにattr*系のメソッドがあるが、メソッド定義以上のことを期待するのは勘弁してください」
こう書けばよかったんだな
0163デフォルトの名無しさん
2009/08/17(月) 16:44:410164デフォルトの名無しさん
2009/08/17(月) 16:46:420165デフォルトの名無しさん
2009/08/17(月) 16:48:22これって明らかにアクセサ用の機能だろ
0166デフォルトの名無しさん
2009/08/17(月) 16:58:350167デフォルトの名無しさん
2009/08/17(月) 17:01:10obj.foo = bar が obj.foo=(bar) の意味である、だとか、
言語レベルの機能だよな。
0168デフォルトの名無しさん
2009/08/17(月) 17:34:33名言集 その3
『いつもサボってばかりのキャップがウゼえ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★
> 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0
> >>69
> 大変って言うか
> 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。
> ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて
> その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから
>
> 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0170デフォルトの名無しさん
2009/08/17(月) 20:35:18等しい要素数を返すにはselectで条件を満たす要素だけとりだしてそれのsizeを調べるしかないでしょうか?
0171デフォルトの名無しさん
2009/08/17(月) 20:52:31その通りです。
便乗して質問させて下さい。
include? ってなんで Array で再定義してるんでしょうか?
Enumerable#include? とは違う実装になってるんでしょうか?
0172デフォルトの名無しさん
2009/08/17(月) 20:53:08grepしてもいいが、「一致する要素の数」というのを直接返すメソッドはない
というかもしあったとしても内部でfind_allしてsize求めるはず
0173デフォルトの名無しさん
2009/08/17(月) 20:58:51[true,false,1, "a",nil,nil].inject(0){|r, i| r += (!i.nil?) ? 1 : 0}
書いてみたはいいけど汚いなぁ
0174デフォルトの名無しさん
2009/08/17(月) 21:11:12rb_ary_includesが遅いと困るからきちんと作ったのだと推測
0175デフォルトの名無しさん
2009/08/17(月) 21:16:150176デフォルトの名無しさん
2009/08/17(月) 21:19:19なるほど。Array#include? をネイティブに書いて少しでも性能をだそうとした
ということですね。
でも。。今 ruby-1.9.1-p129 の array.c 見てみたんだけど、すごく当たり前な
実装なんですね。
この程度でもネイティブ化すると結構速くなるものなんですかね?
0177デフォルトの名無しさん
2009/08/17(月) 21:22:49>>175
Windows版Rubyとして何かをしたという話は聞かない
コンパイルしたときに自動で何かがどうかできるのなら対応してるかも
0178デフォルトの名無しさん
2009/08/17(月) 21:25:45これで足りる?
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
open('foo.txt', 'w'){|f| f.write('in foo.txt') }
open('foo.txt:sub', 'w'){|f| f.write('in foo.txt:sub') }
puts File.read('foo.txt')
puts File.read('foo.txt:sub')
0179デフォルトの名無しさん
2009/08/17(月) 21:44:20低脳死ねカス
[true,false,1, "a",nil,nil].cmplact.length
0180デフォルトの名無しさん
2009/08/17(月) 21:49:39低能氏ねカス
s/cmplact/compact/
0181デフォルトの名無しさん
2009/08/17(月) 21:54:050182デフォルトの名無しさん
2009/08/17(月) 21:54:110183デフォルトの名無しさん
2009/08/17(月) 21:58:140184デフォルトの名無しさん
2009/08/17(月) 21:58:26sizeを調べる「しかない」わけではない。
cnt = 0
array.each {|x| cnt += 1 if some_condition(x) } puts cnt
あまり美しくないけど、どうぞ。
0185デフォルトの名無しさん
2009/08/17(月) 22:12:45SGEをダウンロードしたいのだけれども、
http://www.etek.chalmers.se/~e8cal1/sge/index.html
がNOT FOUNDになります。
いま、SGEはどこでダウンロードできますか?
0186デフォルトの名無しさん
2009/08/17(月) 22:27:53ary=["hage","hige","huge","hege","hoge"]
の要素数を出力したいときに
p ary.size
これはaryを後で別の処理が行われると思われる場合でしょ
んで、
p ["hage","hige","huge","hege","hoge"].size
これは確認したい時だけでしょ
んで、
ary_num=ary.size
p ary_num
ってやってる人がいるんだけど,これは変数が説明になってるってこと?
どの段階で処理したものを変数に入れるかってのがわかんない。好き好きかな?
0187デフォルトの名無しさん
2009/08/17(月) 22:44:15これは
["hage","hige","huge","hege","hoge"]
の要素数を出力したいときに
ary = ["hage","hige","huge","hege","hoge"]
p ary.size
という感じ
aryに代入するのが前提なら、一番目は最も素直
二番目は主に説明・動作確認・デバッグで使われる
代入するのもめんどくさいとかスペース減らしたいとかそういうのが主な理由
三番目は正直くどい
でも説明以外にも値をキャッシュしておきたいケースはあるし、そういう時には避けられない
0188デフォルトの名無しさん
2009/08/17(月) 22:45:400190デフォルトの名無しさん
2009/08/18(火) 00:40:37低脳死ね。タイプ量が多い
s/l//
0191デフォルトの名無しさん
2009/08/18(火) 00:54:11低脳死ね。置換できてない。
cmplact => cmpact
正しくは
compact
^
0192チンパンジー愛ちゃん
2009/08/18(火) 02:24:08うきっきーきーきぃっ
0193デフォルトの名無しさん
2009/08/18(火) 05:15:32質問するスレ間違ってね?
まあいいや、ここ行ってみ
ttp://www.archive.org/
0194デフォルトの名無しさん
2009/08/18(火) 09:49:05C:\> dir a.txt
(略)
2009/08/18 09:46 0 a.txt
(略)
C:\> ruby -e "open('a.txt:foo', 'w'){|f| f.write 'abc'}"
C:\> dir a.txt
(略)
2009/08/18 09:46 0 a.txt
(略)
C:\> ruby -e "p IO.read('a.txt:foo')"
"abc"
0195デフォルトの名無しさん
2009/08/18(火) 14:13:54a = "001011"
b = "000111"
から
c = "000011"
を求める(論理積?)にはどうしたら良いのでしょうか?
0196デフォルトの名無しさん
2009/08/18(火) 14:25:39irb> b = "000111"
irb> ax = a.split(//n)
irb> bx = b.split(//n)
irb> p (0..5).to_a.map{|i| ax[i].to_i & bx[i].to_i}.join
"000011"
0197チンパンジー愛ちゃん
2009/08/18(火) 14:30:51return (Integer(a) & Integer(b)).to_s(2)
end
0198チンパンジー愛ちゃん
2009/08/18(火) 14:33:05return (Integer("0b" + a) & Integer("0b" + b)).to_s(2)
end
0199デフォルトの名無しさん
2009/08/18(火) 14:38:041.9 だけでいいなら a[i] で分割いらないんだけどな
どっちでも動作させるならまだ split がスレ的に無難か
めんどい負の遺産じゃのう
0200195
2009/08/18(火) 14:45:00ありがとうございました! 196が自分には理解しやすい一方、
198の方が速そうに見えるのですが(こちらはpaddingが必要ですね)
大量のデータを処理する際には、違いが出るでしょうか。
0201デフォルトの名無しさん
2009/08/18(火) 14:56:250202195
2009/08/18(火) 15:03:240203デフォルトの名無しさん
2009/08/18(火) 15:21:38h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>0,"b"=>0,"c"=>0}
}
となって次に
"usa"=>{"a"=>1,"b"=>1,"c"=>0}が出たら
h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>1,"b"=>1,"c"=>0}
}
となってほしいのですが,どうすればいいでしょうか?
説明が分かり辛いですが・・・
ループ内にハッシュのキーが一致したら加算していってほしいのです
0204デフォルトの名無しさん
2009/08/18(火) 15:25:021.8.7以降なら Enumerable#count(obj)
0205デフォルトの名無しさん
2009/08/18(火) 15:29:26とりあえず usa = {"a"=>1,"b"=>1,"c"=>0} を h["usa"] に加算する場合
h["usa"].merge!(usa) { |k, s, d| s += d }
{ "usa" => {"a"=>1,"b"=>1,"c"=>0} } でやりたいなら適当にネストさせて
0206デフォルトの名無しさん
2009/08/18(火) 15:30:16h["usa"].merge!(usa) { |k, s, d| s + d }
0207デフォルトの名無しさん
2009/08/18(火) 15:37:29def and_str(a, b)
sprintf("%.*b", [a.length, b.length].max, (a.to_i(2) & b.to_i(2)))
end
0208デフォルトの名無しさん
2009/08/18(火) 15:43:26最初はとにかくやりたいことをそのまま書くといい
多くの場合、そのまま実行しても充分に速い
def add(base, key, val)
if tgt = base[key]
val.each_pair do |k,v|
if tgt[k] then
tgt[k] = tgt[k] + v
else
tgt[k] = v
end
end
else
base[key] = val
end
end
h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>0,"b"=>0,"c"=>0}
}
add(h, 'usa', {"a"=>1,"b"=>1,"c"=>0})
p h
{"ja"=>{"a"=>1, "b"=>1, "c"=>0}, "usa"=>{"a"=>1, "b"=>1, "c"=>0}}
0209203
2009/08/18(火) 16:27:26ありがとうございます。mergeを使ったりやaddを定義するのですね。
本当は
require 'pp'
ary=%w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window =6
hout=Hash.new
ary.size.times{ |i|
hin=Hash.new(0)
hc =Hash.new(0)
b= ary[i+1,window].select { |word| word =~ /[^#{ary[i]}]/ }
pp b
b.each {|count| hin[count] +=1}
hout[ary[i]] = hin
puts "@@@"
pp hout
puts "@@@"
}
pp hout
こんなことをやってます。
最後の pp houtが自分の思ったものと違っていて悩んでいます.
完全質問だと悪いと思って203で質問しました。
0210デフォルトの名無しさん
2009/08/18(火) 19:12:53どうしたらいいんでしょう><
0211デフォルトの名無しさん
2009/08/18(火) 20:02:54正しいMeCabバインディングを使う
Taggerは今SourceForgeにあるMeCabバインディングをそもそも知らない
0212デフォルトの名無しさん
2009/08/18(火) 20:48:35hm..
ってことはMeCabがバージョン9.07ではダメってことで、
古いバージョンのMeCabでおk って解釈でいいんですかね?
0213デフォルトの名無しさん
2009/08/18(火) 21:08:140214デフォルトの名無しさん
2009/08/18(火) 21:17:360215デフォルトの名無しさん
2009/08/18(火) 21:25:58Possible C/C++ prototypes are:
Tagger.new(char const *argc)
Tagger.new()
少しいじった結果エラーログがこうなりました・・。
これはスクリプト書き換えとかで回避できないんでしょうか?
0216203
2009/08/18(火) 21:30:24やはり>>209での問題が解決しませんでした.
ハッシュのハッシュのvalueを加算していきたいのですが助言お願いします.
0217デフォルトの名無しさん
2009/08/18(火) 21:57:11require 'pp'
ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window = 6
hout = Hash.new
ary.size.times do |i|
b = ary[i + 1, window].delete_if{|w| /#{ary[i]}/ =~ w}
b.each do |w|
hout[w] = 0 unless hout[w]
hout[w] += 1
end
end
pp hout
{"w1"=> 10, "w2"=> 9, "w3"=> 11, "w4"=> 9, "w5"=> 6}
0218デフォルトの名無しさん
2009/08/18(火) 22:02:04ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window = 6
hout = Hash.new
ary.size.times do |i|
ary[i+1, window].each do |w|
next if /#{ary[i]}/ =~ w
hout[w] = 0 unless hout[w]
hout[w] += 1
end
end
pp hout
0219デフォルトの名無しさん
2009/08/18(火) 22:28:25ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window = 6
hout = Hash.new(0)
ary.size.times do |i|
ary[i+1, window].reject{|w| w == ary[i]}.each{|w| hout[w] += 1}
end
pp hout
0220203
2009/08/18(火) 22:30:53すいません。欲しい出力を書いていませんでした。申し訳ありません。
{"w1"=>{"w2"=>4, "w3"=>4, "w4"=>3, "w5"=>2},
"w2"=>{"w1"=>4, "w3"=>5, "w4"=>2, "w5"=>1},
"w3"=>{"w1"=>4, "w2"=>2, "w4"=>3, "w5"=>2},
"w4"=>{"w1"=>2, "w2"=>2, "w3"=>1, "w5"=>1},
"w5"=>{"w1"=>0, "w2"=>1, "w3"=>1, "w4"=>1}}
と出力して欲しいのです。
0221チンパンジー愛ちゃん
2009/08/18(火) 23:01:40def hash_add(base, add)
ret = add.each do |nest_key, nest_value|
if base[nest_key]
nest_value.each do |add_key, add_value|
base[nest_key][add_key] += add_value
end
else
base[nest_key] = nest_value
end
end
return base
end
h1 = {
"ja"=>{"a"=>5,"b"=>7,"c"=>9},
"usa"=>{"a"=>4,"b"=>2,"c"=>1}
}
# $(B$H$J$C$F<!$K(B
h2 = {
"ja"=>{"a"=>3,"b"=>8,"c"=>4},
"usa"=>{"a"=>14,"b"=>8,"c"=>5}
}
# $(B$,=P$?$i(B
pp hash_add(h1, h2)
# h1.inspect
h = {
"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>1,"b"=>1,"c"=>0}
}
0222デフォルトの名無しさん
2009/08/18(火) 23:07:58ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
zero = ary.uniq.inject(Hash.new){|h,w| h[w] = 0 ; h }
window = 6
hout = Hash.new
ary.each_with_index do |key,i|
(hout[key] = zero.dup).delete(key) unless hout.key?(key)
ary[i+1,window].select{|e| e != key }.each {|word| hout[key][word] += 1 }
end
0223チンパンジー愛ちゃん
2009/08/18(火) 23:25:03問題をうまくまとめれてないんじゃない?
もうちょっと整理してから再度質問して。
require 'pp'
ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window =6
ary.size.times { |i|
j = i + 1
p [":ary[#{j},#{window}]", ary[j, window]]
}
t217.3.rb [utf-8][unix]
:!ruby t217.3.rb
[":ary[1,6]", ["w2", "w3", "w4", "w2", "w3", "w1"]]
[":ary[2,6]", ["w3", "w4", "w2", "w3", "w1", "w1"]]
[":ary[3,6]", ["w4", "w2", "w3", "w1", "w1", "w5"]]
[":ary[4,6]", ["w2", "w3", "w1", "w1", "w5", "w2"]]
[":ary[5,6]", ["w3", "w1", "w1", "w5", "w2", "w3"]]
[":ary[6,6]", ["w1", "w1", "w5", "w2", "w3", "w4"]]
[":ary[7,6]", ["w1", "w5", "w2", "w3", "w4"]]
[":ary[8,6]", ["w5", "w2", "w3", "w4"]]
[":ary[9,6]", ["w2", "w3", "w4"]]
[":ary[10,6]", ["w3", "w4"]]
[":ary[11,6]", ["w4"]]
[":ary[12,6]", []]
0224チンパンジー愛ちゃん
2009/08/18(火) 23:25:520225203
2009/08/18(火) 23:44:32ありがとうございます。
hout=Hash.new
ary.size.times{ |i|
hin=Hash.new(0)
でhinを初期化しているから同じkeyが来たときに上書きされてしまっているのが一つ問題と
同じkeyが来たときにそのvalueの中にあるハッシュで同じモノがあれば加算して、なければmergeする方法がわからないのがもう一つの問題です。
mergeの方法は>>205-206,>>208さんのやり方になるのかなと思ってます。
>>224
ary[12,6]はそれでもOKだと思ってます。
そこは加算しなくていいよーということで。だめなんでしょうか?
0226チンパンジー愛ちゃん
2009/08/18(火) 23:45:41@mecab = MeCab::Tagger.new([$0])
ってかいてあるところに
@mecab = MeCab::Tagger.new("arg1 arg2 arg3 arg4 ...")
みたいな感じで直接Mecab用のオプション書けばうまくいくよ
0227チンパンジー愛ちゃん
2009/08/18(火) 23:53:51ary[12, 6]をきちんと認識しているのなら何も問題はないでふ
ただ、ここがバグの原因じゃないかな?と思っただけで。
Hash.new(0)
してあるんだから、
「同じkeyが来たときにそのvalueの中にあるハッシュで同じモノがあれば加算して、なければmergeする」
は、
h["unknown_value"] += unknown_value_key
と直接書けばよいでしょ。
以下のコードの実行結果の予想つく?
h0 = Hash.new(0)
hash = {}
p h0[:unknown_keh0 = Hash.new(0)
hash = {}
p h0[:unknown_key]
p h0[:unknown_key] += 5
p hash[:unknown_key]
p hash[:unknown_key] += 5
y]
p h0[:unknown_key] += 5
p hash[:unknown_key]
p hash[:unknown_key] += 5
0228チンパンジー愛ちゃん
2009/08/18(火) 23:55:27こっちのコードの実行結果の予想つく?
h0 = Hash.new(0)
hash = {}
p h0[:unknown_key]
p h0[:unknown_key] += 5
p hash[:unknown_key]
p hash[:unknown_key] += 5
0229チンパンジー愛ちゃん
2009/08/18(火) 23:57:180230デフォルトの名無しさん
2009/08/19(水) 00:04:070
5
0
5
では・・・・ないんですか?すいません。
あと:unknownという表記になれていませんのでそこがわかりません。
0231デフォルトの名無しさん
2009/08/19(水) 00:10:07No such file or directory - .\/log.txt (Errno::ENOENT)
このようになります。
ディレクトリ指定をLinux用の表現にしたいんですけど、ソースを見てもまったくわかりません。
その部分を書き換えられれば動くと思うんですが、何をどう書き換えればいいかご教授いただけないでしょうか
0232デフォルトの名無しさん
2009/08/19(水) 00:14:36@mecab = MeCab::Tagger.new("arg1 arg2 arg3 arg4 ...")
と書いてみましたが・・。
何を見て何のオプションを書き加えていけばいいんでしょうか・・?
0233デフォルトの名無しさん
2009/08/19(水) 00:16:04原因がわかってるように見えるので、むしろ何がわからないのかわかりません
適当な、それっぽいコード塊でも提示すれば何か答えようがあるかもだけど
0234チンパンジー愛ちゃん
2009/08/19(水) 00:16:39:aaaとかはシンボルっていうんだけど、
シンボルが難しいんならいいや以下のコードで考えて。
h0 = Hash.new(0)
hash = {} # Hash.new と等価
p h0["unknown_key"]
p h0["unknown_key"] += 5
p hash["unknown_key"]
p hash["unknown_key"] += 5
実行結果の予想は間違ってるよ。
0
5
nil
h.rb:6: undefined method `+' for nil:NilClass (NoMethodError)
自分で確認してね。
あとさ、Hash.newの挙動が分かってないので、Hashの初期化について学んで来てください。
0235デフォルトの名無しさん
2009/08/19(水) 00:16:56それで躓くとなるとRubyどころかプログラム自体初心者じゃないかと思う
でなければよほど面倒なことをしてるソースか
どちらにせよソース提示が必要かと
0236チンパンジー愛ちゃん
2009/08/19(水) 00:27:23ええーっ!
@mecab = MeCab::Tagger.new("arg1 arg2 arg3 arg4 ...")
ってほんとうに実行したの?
argの意味が分からない系のヒトなのか
チンパンジー愛ちゃんでもできたのにねー
まあ、いいや。
OSとOSのバージョン・種類、rubyのバージョン、
mecabのバージョン、mecab-rubyのバージョン、mecab用辞書のバージョン
@mecab = MeCab::Tagger.newとして実行ときのエラーメッセージ
これらすべてを答えてね。
# 個人的な興味として何でghotiなんて使おうと思ったの?
0237チンパンジー愛ちゃん
2009/08/19(水) 00:28:38これらすべてのインストール方法も書いてね。
0238203
2009/08/19(水) 00:30:44ありがとうございます。シンボルですか。了解です。
h0 = Hash.new(0) #ハッシュh0を作り初期値は0
hash = {} # Hash.new と等価 #ハッシュhashを作成(ハッシュの箱を作っただけ)
p h0["unknown_key"] #h0のkeyをunknown_keyとしてそのvalueを出力->初期値0
p h0["unknown_key"] += 5#↑のkeyのvalueに5加算
p hash["unknown_key"] #hashのkeyをunknown_keyとしてそのvalueを出力->でも中身が入ってないからnil
p hash["unknown_key"] += 5 #↑中身がわかってないのに5たしてんじゃねーよ
ということですね。少しわかりました。
0239231
2009/08/19(水) 00:30:53from ******.rb:444:in `open'
from ******.rb:444:in `store_text'
def store_text(lines)
ary = []
lines.each do |line|
ary << line.gsub(/\s+/, ' ').strip ←ココ 444行目
end
ary.each do |line|
@text << line
end
File.open(@text_filename, 'a') do |fp|
ary.each do |line|
line.chomp!
fp.puts line
end
■ このスレッドは過去ログ倉庫に格納されています