Ruby初學者スレッド Part 9
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001紅寶石
2006/11/21(火) 08:33:42マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/
前スレ
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
>>2-10
0886デフォルトの名無しさん
2007/01/16(火) 18:00:15>>885
それが一番の問題だと思う。初心者スレだからなおさらだな。
strに350MBもデータをコピーしてる時点でなんか間違ってる
可能性が大きいわけで、fillを使えば済む話じゃないかもしれん。
0887デフォルトの名無しさん
2007/01/16(火) 19:32:58いろいろと調べてみたのですが、わからないのでどなたかわかる方がいらっしゃったらよろしくお願いします。
0888デフォルトの名無しさん
2007/01/16(火) 19:33:500889デフォルトの名無しさん
2007/01/16(火) 20:44:30フォルダをクリックして確かめる。
0890デフォルトの名無しさん
2007/01/16(火) 21:23:56FileTest.exist?(filename)
filename が存在する時、真を返します。
0891デフォルトの名無しさん
2007/01/17(水) 00:28:12http://www.itmedia.co.jp/enterprise/articles/0701/15/news024.html
1回目と2回目のインタビューのリンクもあるので、Rubyファンはぜひ。
0892878
2007/01/17(水) 00:28:460893デフォルトの名無しさん
2007/01/17(水) 00:58:12クラスメソッドなら
class ClassA
・・・
end
def ClassA::method_b
・・・
end
のような形で書けるみたいですがインスタンスメソッドの場合がどうも見当たらないんです。
0894デフォルトの名無しさん
2007/01/17(水) 01:27:57ClassA.class_eval{
def foo
・・・
end
}
0895デフォルトの名無しさん
2007/01/17(水) 01:39:51できました。ありがとうございます。
0896デフォルトの名無しさん
2007/01/17(水) 02:01:02>プログラミング言語はすべて愛おしい
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0897デフォルトの名無しさん
2007/01/17(水) 02:21:12> str.fill("g",100..350)
String#fillなんてあったっけ?
0898デフォルトの名無しさん
2007/01/17(水) 02:35:38fillはArrayだった。886は間違い。
0899デフォルトの名無しさん
2007/01/17(水) 03:16:37なんでこれが、クラスではなくインスタンスのメソッドになるのか
ちっとも理解できないのだけれど……。
分かりやすいサイトプリーズ
0900デフォルトの名無しさん
2007/01/17(水) 03:20:07リファレンスに書いてあるよ。
0901デフォルトの名無しさん
2007/01/17(水) 03:23:46わかりやすいサイトは思いつかないが、スコープの問題を除けば、
class ClassA
# X
end
と、
ClassA.class_eval{
# Y
}
とでは、XとYは同じ環境になる。
単にそれだけ。
0902デフォルトの名無しさん
2007/01/17(水) 03:34:38特定のインスタンスだけに定義されたメソッドを混同していた。
さいきんruby使う暇なくて忘れてたorz
0903デフォルトの名無しさん
2007/01/17(水) 07:00:53>nilを代入するのではダメでシンボルテーブルから変数名自体を消したいってこと?
そうです。ERB用にこんなことをしたいんです。
# HashからBindingをつくる
def create_binding(_hash)
_defstr = _hash.inject('') { |_s, _e| _s << "#{_e[0]} = _hash[#{_e[0].inspect}];" }
eval _defstr
#undef _hash, _defstr # これができないものかと。
binding()
end
b = create_binding(:a=>10, :b=>'foo', :c=>%w[x y z])
0904デフォルトの名無しさん
2007/01/17(水) 09:39:30たしか Matz は I hate C++. と逝っていたと思うんだけど、
それでもいとおしいと思ってるんだね。
0905デフォルトの名無しさん
2007/01/17(水) 09:41:290906デフォルトの名無しさん
2007/01/17(水) 10:01:30むしろ一時変数なんか気にすんなって言いたいが。
そもそもevalした時点で安全でなくなっているわけだし。
ハッシュ受け取ってローカル変数なりクラス変数なりに展開するERBの子クラスを作ればいいんじゃないのか。
0907デフォルトの名無しさん
2007/01/17(水) 11:25:02流れ見ないで書き込むんだけど、evalとかで変数表を表示したときに
一時変数も一緒に出て来てしまうのが気に入らないとか?
0908デフォルトの名無しさん
2007/01/17(水) 11:56:36とりあえず現在のところローカル変数を明示的に消すことはできない
のでやりかたを変えるしかない。
0909デフォルトの名無しさん
2007/01/17(水) 12:16:34最近は本気で2chのデマを信じ込む奴が結構居るから、
これくらいのアッサリ風味でこられると本気なのか釣りなのか判断つかない。
0910デフォルトの名無しさん
2007/01/17(水) 12:36:21関係者か?
0911デフォルトの名無しさん
2007/01/17(水) 12:40:190912デフォルトの名無しさん
2007/01/17(水) 13:15:360913デフォルトの名無しさん
2007/01/17(水) 13:25:56煽りあいは本スレでお願いいたします。
0914デフォルトの名無しさん
2007/01/17(水) 23:18:09irb(main):001:0> Dir.glob("c:/本/*")
=> []
irb(main):002:0> Dir.open("c:/本") do |dir|
irb(main):003:1* dir.each do |f|
irb(main):004:2* p f
irb(main):005:2> end
irb(main):006:1> end
"."
".."
=> #<Dir:0x3a1e55c>
Windows2000/VISTAの話で入れたのはActiveScriptRuby
"本稼動"だの"本番"だのが共有ディレクトリ内にあるんだな
0915デフォルトの名無しさん
2007/01/17(水) 23:45:290916デフォルトの名無しさん
2007/01/18(木) 01:42:06空のBindingを作ってから他のローカル変数を追加すればいい。
def empty_binding
binding
end
def create_binding(h)
b = empty_binding
h = h.inject({}) {|hx, (var, val)| hx[var.to_s] = val; hx}
arg = "__a"
arg.succ! while h.key?(arg)
eval((h.keys << "nil").join(" = "), b)
h.each {|var, val| eval("proc {|__a|#{var}=__a}", b).call(val)}
b
end
# テスト
b = create_binding(:a=>10, :b=>'foo', :c=>%w[x y z])
p eval("a", b)
p eval("b", b)
p eval("c", b)
p eval("h rescue $!", b)
p eval("__a rescue $!", b)
0917デフォルトの名無しさん
2007/01/18(木) 19:10:20if /1/ =~ input
これだと、inputが11や111でもマッチしてしまいます。
input = 1の時だけマッチさせるにはどうすればよいでしょうか?
0918デフォルトの名無しさん
2007/01/18(木) 19:16:310919デフォルトの名無しさん
2007/01/18(木) 19:17:290921デフォルトの名無しさん
2007/01/18(木) 19:34:540922デフォルトの名無しさん
2007/01/18(木) 19:43:250925デフォルトの名無しさん
2007/01/18(木) 21:19:400926デフォルトの名無しさん
2007/01/18(木) 21:48:400927デフォルトの名無しさん
2007/01/18(木) 22:05:48/¥A1¥z/ =~ input.chomp
でもマッチするだろう。
0928デフォルトの名無しさん
2007/01/18(木) 23:49:47"本" のシフトJISコードの2バイト目が "{" なので
こいつをワイルドカード文字と誤認識して異常動作している
私も以前にこれに引っかかりました
Dir.open('ほげほげ').to_a
とかに変えた記憶があります
・ディレクトリエントリのみの配列になる
・ドットファイルも含まれる
・ディレクトリの再帰検索は出来ない
・パスデリミタとしてバックスラッシュも使える
という違いがありますが、大抵はこれで事足りるような気がします
シフトJISの呪いはいつまで続くのでしょうか
0929デフォルトの名無しさん
2007/01/19(金) 00:04:28-Ks で解決する問題とは違う?
0930デフォルトの名無しさん
2007/01/19(金) 02:59:37違う。純粋にglobingのルーチンの問題。
実は1.9で使われているglobingルーチンでは解決しているが、
なんのかんので1.8にバックポートされていない。
1.8.6で入れてくれ。ってリクエストしてもダメかねえ。
0931デフォルトの名無しさん
2007/01/19(金) 12:02:48リファレンスはHowToな対応できても基礎がわかってなくて不安です
で、高かったり厚くても問題ないので、1冊だけ読むならこれ、っていうお勧めの書籍ってなんでしょうか?
一応amazonとかみると「プログラミングRuby―達人プログラマーガイド」
が評判良さそうなのですが、>>281>>286でもあがってないし少し古いのでどうなんでしょか?
(ちなみに他言語はそこそこ触ってます
0932デフォルトの名無しさん
2007/01/19(金) 12:21:54webの情報でなんとかなりますよ
0933デフォルトの名無しさん
2007/01/19(金) 12:23:22Rubyソースコード完全解説
RubyHackingGuide
0934931
2007/01/19(金) 12:46:59>webの情報でなんとか
割とそうですがそういうもんでしょうか
Rubyソースコード完全解説は趣旨と違うけど面白そう
0935デフォルトの名無しさん
2007/01/19(金) 12:52:19私はwebの情報を見ながらだけど
あなたと同じように
これで大丈夫なんかいな?
基礎分かって無いで使ってるけど?
みたいな心配がありました
ちょっと趣きを変えて
Rubyソースコード完全解説
を読んでみたら
読んだあとはすらすら使えるようになってました
0936デフォルトの名無しさん
2007/01/19(金) 13:30:49> 1.8.6で入れてくれ。ってリクエストしてもダメかねえ。
ちと、そのへんの強化策を考えないといかんかねぇ。
有用そうだけど1.9からバックポートされてないのというと、こんなところか。
* multibyte path globing
* large file support
* override by forwarding
0937デフォルトの名無しさん
2007/01/19(金) 13:41:57自分はJavaからやった。
Javaは書籍が豊富だから。
回り道のように思えるけど、自分はこっちの方が効率がいいと思っている。
0938デフォルトの名無しさん
2007/01/19(金) 13:57:17override by forwarding って何?
0939デフォルトの名無しさん
2007/01/19(金) 17:51:410940デフォルトの名無しさん
2007/01/19(金) 17:53:070941デフォルトの名無しさん
2007/01/19(金) 17:56:02コレでいいだろ?
0942デフォルトの名無しさん
2007/01/19(金) 18:27:11東大生乙
0943939
2007/01/19(金) 19:37:21あとできればヒープソートの作り方も教えてください。
0944デフォルトの名無しさん
2007/01/19(金) 19:43:161始まり→2nと2n+1
0始まり→2n+1と2n+2
に入れればいい。
0945939
2007/01/19(金) 19:50:07自分でもうちょい考えたら改めて質問に来ます。
0946デフォルトの名無しさん
2007/01/19(金) 20:28:02http://pc10.2ch.net/test/read.cgi/tech/1106572657/
0947デフォルトの名無しさん
2007/01/19(金) 20:28:360948939
2007/01/19(金) 23:10:16おお!
こんなスレあったんですね!
0949デフォルトの名無しさん
2007/01/20(土) 00:22:05それはビープ。
0950デフォルトの名無しさん
2007/01/20(土) 00:31:43read()とかwrite()とかを#defineで置き換えてるのを、DLLのforwardingで置
き換えるようにするというのを勝手に「override by forwarding」と書いた。
ChangeLogにはaliasと書いてあったので、
「symbol alias by forwading」ということにしよう。
svnでいうとrevision 9502。
0951デフォルトの名無しさん
2007/01/20(土) 00:39:08Dir.globが空Array返したってだけじゃないのか?
"*"はdot fileにはマッチしないんだから。
0952デフォルトの名無しさん
2007/01/20(土) 04:19:11coding pragma を追加したいところだけど、あれは1.8には持ってこれない
という話だから、それくらいかな?
ところで署名でも集めるの?w >強化策
0953デフォルトの名無しさん
2007/01/20(土) 08:14:15お前だけだ。分かってくれたのは・・・。
もう少して危ない人になるところだった。
0954デフォルトの名無しさん
2007/01/20(土) 11:44:14レシピファイル作成をスクリプトの実行と同時に自動で行う機能があるとのことですが、
ずっとループし続けるスクリプトの場合には、自動生成できないのでしょうか?
もしあれば教えてください。
0955デフォルトの名無しさん
2007/01/20(土) 13:04:050956デフォルトの名無しさん
2007/01/20(土) 14:05:33実際、requireするのを探すだけですもんね。
ありがとうございました。
0957デフォルトの名無しさん
2007/01/20(土) 15:08:27test という文字列のあと端末の高さぶんの空行が開いた後に
プロンプトが表示されます。
この空間ができないようにするにはどうしたらいいんでしょうか?
Curses::stdscr.setpos(Curses::stdscr.cury - 1, 0)
をはさんでみるなどしてみましたがダメでした。
端末は Cygwin/ck/screen/zsh です。
require "curses"
begin
Curses::init_screen
Curses::stdscr.addstr("test\n")
Curses::stdscr.refresh()
rescue
Curses::close_screen
end
0958デフォルトの名無しさん
2007/01/20(土) 21:10:40>>928 が説明してくれている通りで、例えば'も'を含んだパスとか駄目
0959デフォルトの名無しさん
2007/01/21(日) 14:47:28と思って探したんですが見つけられませんでした
そういったライブラリってありますか?
0960デフォルトの名無しさん
2007/01/21(日) 15:14:16DOM使え。
0961デフォルトの名無しさん
2007/01/21(日) 15:35:22どうしても DOM を使わなければいけない理由がなければ、
DOM を使わないほうが楽なので。
0962デフォルトの名無しさん
2007/01/21(日) 15:38:50$TERMはなんになってる?
screen抜いてみたもダメ?
0963デフォルトの名無しさん
2007/01/21(日) 15:51:23ありがとうございます
jsを扱ってきたのでDOM処理ができれば今後も楽だなぁと思ったんですが。
単純な文字列処理でも強力なので素直にそっち使っていきます
0964デフォルトの名無しさん
2007/01/21(日) 16:23:01http://wota.jp/ac/?date=20070115#p01
とか参考になるかと。
0965デフォルトの名無しさん
2007/01/21(日) 17:20:49面白そうなモノをありがとう
しかしなぜか(←思考停止)モジュール内部でエラー出してだめだったので
人並みにruby出来るようになるまで正規表現で対応します
0966デフォルトの名無しさん
2007/01/22(月) 12:42:32http://jp.rubyist.net/magazine/?0010-CodeReview#l12
↑これを読んでいるのですが、
「リテラルへの式埋め込み」ってありますよね?
式の埋め込みは、コンパイル時にチェックがされないので、どうなのかなー?
実行してみないとわからない、と思うのですが、
みなさんは多用されてます?
ユニットテスト前提なんだろうか・・・。
0967デフォルトの名無しさん
2007/01/22(月) 13:26:08どっちみち手動でも自動でもテストはしなきゃ話にならんのだから使いたいときに使えばよい。
0968デフォルトの名無しさん
2007/01/22(月) 14:25:49少なくともSyntax Errorはコンパイル時にチェックしてるようなので
問題ないと思うんだが
0969デフォルトの名無しさん
2007/01/22(月) 18:20:35ああ、それのことか。
それに関しては1.8にバックポートされる可能性はないと思うよ。
0970デフォルトの名無しさん
2007/01/22(月) 22:34:340971デフォルトの名無しさん
2007/01/22(月) 22:55:391.8以降なら、たとえば "lit#{code}eral" は
"lit" << code.to_s << "eral" とおなじ形に解釈される。
普通のrubyコードでチェックされる点はチェックされるし、
チェックされない点はチェックされない。
0972デフォルトの名無しさん
2007/01/22(月) 23:04:32場合によるけどシンボルがそれに近い
0973966
2007/01/22(月) 23:13:37変なこと言ったかな?と思ったんですが、
どうやら、自分が言いたかったのは、ruby -c での構文チェックのことでした。
(後だしっぽくて申し訳ない)
・・・と思ったら、
hoge = 1234
puts "hoge = #{hoge_} でつ"
だろうが、
hoge = 1234
puts "hoge = " + hoge_ + "でつ"
だろうが、ruby -cは通るのか・・・orz
構文チェックってもしかして、ザルですか?(:D)rz
0974デフォルトの名無しさん
2007/01/22(月) 23:46:05だって構文としては正しいし。
self.hoge_を期待するというだけ。
0975デフォルトの名無しさん
2007/01/22(月) 23:48:50シンボルか。
サンクス。
0976デフォルトの名無しさん
2007/01/23(火) 00:14:000977デフォルトの名無しさん
2007/01/23(火) 00:29:250978デフォルトの名無しさん
2007/01/23(火) 00:50:350979デフォルトの名無しさん
2007/01/23(火) 02:47:120980デフォルトの名無しさん
2007/01/23(火) 02:58:230981デフォルトの名無しさん
2007/01/23(火) 03:01:510982デフォルトの名無しさん
2007/01/23(火) 05:56:45ちょっと滑っちゃったという図
0983デフォルトの名無しさん
2007/01/23(火) 06:12:280984デフォルトの名無しさん
2007/01/23(火) 07:10:43まったくそんなことはないわけで。
0985デフォルトの名無しさん
2007/01/23(火) 13:24:02質問受付中
レス数が950を超えています。1000を超えると書き込みができなくなります。