Ruby について Part 3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/
<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0514デフォルトの名無しさん
NGNGそれは (3) だが (1) や (2) が (3) と等価なのかは知らん。
0515デフォルトの名無しさん
NGNGそいういったことをしてくれるツールが検索しても見当たりませんでした。
こんなツールがあるよといった情報や、他の Ruby 用 Unit Test ツールでは実装
されているという情報がありましたら、教えてください。
0516デフォルトの名無しさん
NGNGcronの方はどうとでもなるとして、htmlのそれっぽい出力はないんじゃないかな。
ui/gtk/やui/fox/のtestrunner.rbを参考に書いてみては?
0517デフォルトの名無しさん
NGNGRubyUnitはTest::Unitに統合されてるのでそっちを使ったほうがいいかも。
HTMLでの出力というのがどういうものを求めてるのかよく分からんが、
test/unit/ui/html/testrunner.rbを他のtestrunnerを参考に書いてくれると
嬉しい人が増えると思われ。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGスクリプトファイルはじまり
#!/ruby
if なんとか
i = 10 #ここではじめてiが出てくる
end
print "#{i}\n" # 10
おわり
ifの中で初めて使う変数が、ifの外でも使えます。
これってあり!?
0520デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4
0521デフォルトの名無しさん
NGNGb=a["3"]
b[4] = b[4].to_i + 1
で、a["3"][4] が1になって欲しいんですがならないのはどーして?
0522デフォルトの名無しさん
NGNGただし、多分意図している動作とは異なる。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3AHash
0523521
NGNGほんとだ、a["3"][4]は1を返しますね。
でも、 a.inspect => {} となってしまいます。
a.each do |key,val| とかなにも返って来ませんし、、、
Ruby 1.6.7 です。
0524デフォルトの名無しさん
NGNG調べればあちこちに書いてあると思うけど、
Hash.new(obj) の引数 obj は Hash#default の値として保持され、
このオブジェクトは存在しないキーへの参照があったときに返される。
h = Hash.new("Go Fish")
h["a"] = 100
h["b"] = 200
h["a"] #=> 100
h["c"] #=> "Go Fish"
h.default #=> "Go Fish"
h["c"] << "pond"
h["c"] #=> "Go Fishpond"
h.default #=> "Go Fishpond"
h["c"] = 300
h["c"] #=> 300
h.default #=> "Go Fishpond"
h["d"] #=> "Go Fishpond"
0525デフォルトの名無しさん
NGNG>>522のリンクを読めよ。
0526デフォルトの名無しさん
NGNG「デフォルトオブジェクト」とかにすれば勘違いしづらいかも。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG↑これ読んだ人、乾燥キボンヌ。
0529デフォルトの名無しさん
NGNG乾いてたよ。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGクラスのインスタンス変数をインスタンスのインスタンス変数として使っちゃだめ?
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGでは、クラスのインスタンスのインスタンス変数として使っちゃ駄目?
つまり「クラスのインスタンス変数」と「そのクラスのインスタンスのインスタンス変数」
の使い分けを教えて欲しいのれす。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGそれは全然違うと思うけど。
クラスのインスタンス変数は、継承したくなくて(クラス変数じゃ駄目)、
公開もしたくない(定数も駄目)が、クラスに所属させたい名前じゃないかな。
例えば特異メソッドで使う値とか。
0537533
NGNG--(コード)--
class Person
@name
def initialize(name)
@name = name;
end
def say
p @name
end
end
p1 = Person.new("foo");
p2 = Person.new("bar");
p1.say();
p2.say();
--(結果)--
"foo"
"bar"
--
両方とも "bar" ってなってほしかったのですが、、
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG> class Person
> @name
この@nameと
> def initialize(name)
> @name = name;
この@nameは別物。
前者はPersonというClassオブジェクトのインスタンス変数。
後者はPersonクラスのオブジェクトの持つインスタンス変数。
0540デフォルトの名無しさん
NGNGclass C
@n = 0
def self.n() @n end
def self.new() @n += 1; super end
end
class S<C
@n = 0
end
S.new; C.new; C.new; C.new; S.new;
p [C.n, S.n] #=> [3, 2]
0541デフォルトの名無しさん
NGNGファイル無しでimage instance作りたいってこと? フツーに new すりゃいいし
0542デフォルトの名無しさん
NGNGイマイチどんなつかいでがあるのかわかんない。
サブクラスでの変更がスーパークラスへ反映されなければいいのに、
と思うことが多い。
0543デフォルトの名無しさん
NGNGつかってるよ。例えばなんかのデフォルト値とか。
サブクラスでも同じデフォルト値を使いたいからね。
定数でもいいんだけど、デフォルト値を変更したいときもあるから。
目的に応じて、クラス変数とクラスインスタンス変数を
つかいわければいいんじゃない?
サブクラスでの変更を親クラスへ反映させたければクラス変数、
させたくなければクラスインスタンス変数。
0544デフォルトの名無しさん
NGNGおお、クラスインスタンス変数ってのがあるんですね (←節穴野郎) 。
>>540 みたいに使うのか。
なんか漏れにもうまいこと使い分けれそうです。ども。
0545sage
NGNG正しい読み方ってどういう風に呼ぶのでしょうか??? > @、@@
クラスのインスタンスが持つ変数を「インスタンス変数」
クラスが持つ変数を「クラス変数」
という風に覚えていたのですけど、違ったのですか???
0546デフォルトの名無しさん
NGNGsage間違えた‥
0547デフォルトの名無しさん
NGNGあってる
@instance_variable オブジェクト毎
@@class_variable クラス毎
クラスはそれ自身がオブジェクトでもあるので両方持てる
0548デフォルトの名無しさん
NGNGhttp://jarp.jin.gr.jp/win32/aは知っているのだけれど、gdbm.soはないです。
Makefile が妙でnmake失敗してしまうです。
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551548
NGNGありがとうございました。
0552デフォルトの名無しさん
NGNGって事を知らない人、結構いるね。
この板だと話が通じない事多い。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG>>553みたいに
話が通じない事多い。
0556Rubyist@553
NGNGしらなかったんだよシラネーよ知って根ーよシラララララララネネネネネネネシラネー
ヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨ
ブァベブチャグチャグハアァァアアアアァァブァァアアァアアウアウアアウアウウウウウアウウアウウアあうアウアアウアウガアアアアアウゥァウガアカカカガ゙カクククセゼグギ
0557デフォルトの名無しさん
NGNGをダウンロードし、
\bin\gdbm.dll 21,504 03/04/22
を、gdbm.soとリネームし、
require 'gdbm' したところ、
\hage.rb:1:in `require': 127: 指定されたプロシージャが見つかりません。 - Init_gdbm (LoadError)
./gdbm.so
が出てしまいました。
ruby 1.6.8 (2002-12-24) [i586-mswin32] です。
0558デフォルトの名無しさん
NGNGまあ、元の聞き方が悪いから仕方がないけど。
それはrubyから(gdbmモジュールを通して)使うgdbmライブラリ本体だよ。
それくらいzipファイルの中身を見て見当つけなさい。
0559デフォルトの名無しさん
NGNGというのはいかがなものか。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG後学のためにどう聞けば良かったか教えてください。
0562デフォルトの名無しさん
NGNG558じゃないけど。
Makefileがどう妙なの?
どうやってMakefileを作ったの?
rubyのバージョンは?(557に書いてあるけど)
あたりは最低限必要かと。
それがわかれば、もうちょっとましな質疑応答になると思われ。
ちなみに、今回の場合は、550が嘘で552は本当だけどミスリーディング。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGunix板の情報整理スレでも「メモはRDで書いてる」ってのが
何度か挙げられていたから、良いモノなのかも。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=Google+UTF-8+%E6%A4%9C%E7%B4%A2%E6%96%87%E5%AD%97%E5%88%97+Ruby&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
のq=???の日本語部分のデコードができなくて困っています。
CGI.unescape や NKF してたんですが、うまくいきません。
UTF-8だからかな?
できればポインタなどお願いします。
0568デフォルトの名無しさん
NGNGUTF-8は現nkfでは扱えない(nkf自体Unicode制定前のものだから当然だが)ので、
uconv,iconv,unkfあたりを使う。在処は
uconv: RAA
iconv: 1.8では標準、1.6ならshim
unkf: rough
0569デフォルトの名無しさん
NGNGさがしてやってみます。
0570567
NGNGunkfをインストールして、
require "cgi"
require "unkf"
q="%93%FA%96%7B%8C%EA"
NKF.nkf("-e", CGI.unescape(q))
で、EUCの文字列が取得できました。
どうもありがとうございます。
0571デフォルトの名無しさん
NGNGとすると、nilと表示されてしまうのですが、これを何も表示されないようにしたい。
class NilClass
def to_s
''
end
end
としても、
def nil.to_s
''
end
としても、nilと出力されてしまう。
どうすればよいか、知恵を拝借したい。
printを再定義しないとだめ?
0572デフォルトの名無しさん
NGNGつか、print 対象に nil がこないようなロジックにすべきじゃないかと。
0573デフォルトの名無しさん
NGNG諦めてprintを再定義してくれ。
>>572
inspectをどれだけ変えても無駄では?
なにしろ、printのソースが
case T_NIL:
rb_io_write(out, rb_str_new2("nil"));
だ。
0574デフォルトの名無しさん
NGNGあ、ほんとだ。早とちりだった。
0575デフォルトの名無しさん
NGNGまじで?ソースコード埋め込みだったのか。
質問の背景を説明すると、RubyでCGIを作成してて、
cgi = CGI.new
user, = cgi['user']
mail, = cgi['mail']
print user, "<br/>\n"
print mail, "<br/>\n"
としてるんだけど、このときuserやmailがnilと表示されるので
どうにかしたかった。いちいち
user ||= ''
mail ||= ''
とするのもうざったいし。
こんなとき、みんなはどうしてるの?
0576デフォルトの名無しさん
NGNGもっといい方法がありそうだが、
user = cgi['user'].first || ''
なんてのはどうだろう。一行で書けるし。
0577デフォルトの名無しさん
NGNGprint "#{mail}<br/>\n"
0578デフォルトの名無しさん
NGNG576+577で脳内idiom化済み。
0579デフォルトの名無しさん
NGNG最初はこうしてたんだけど、
http://localhost/login.rbx
と
http://localhost/login.rbx?username=&password=
とを区別したかったので(前者ではcgi['username'][0]はnil、
後者では "" )、使わないことにした。
>>577
これ、うまくいくね。ありがとう。
でもなんで?もし仕組みをしってたら教えてください。
0580デフォルトの名無しさん
NGNGもちろん明示的に
print user.to_s, "<br/>\n"
としても望み通りになる。
0581デフォルトの名無しさん
NGNGうー、そういうことか。
def nil.to_s() とか class NilClass; def to_s() ... とか
していたおれはアホやね。すでにそうなっていたのか。
さんきうです。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG現実のコードが複雑なら、質問するときは本質部分だけをとりだした
簡単なものを示すのが普通では?
0584デフォルトの名無しさん
NGNGその「簡単なもの」が571だというならそれはそれで納得なんだけど。
575のようにCGIの入力を無加工でprintに渡すわけはないので、
それまでに別のところでnil問題に遭遇するだろう、ということだよ。
なので、575でいう「こんなとき」はありえない。
0585デフォルトの名無しさん
NGNGソース取ってきて自分でビルドするのと比較して何が嬉しいの?
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGソース取ってくるほど熱心でないユーザも使う可能性が増える。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGだとしたら、使ったバイナリをビルドした設定を記録するのがちょっとは楽になるかな。
0591デフォルトの名無しさん
NGNG???
今いち言いたいことが分からないけど、Un*x と変わらないよ?
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGでも動かない。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG機能限定でいいから軽い YAML 実装ってないですかね?
無きゃ自分で書くしかないんだけど・・・
0598デフォルトの名無しさん
NGNGCygwin入れてない環境でも、Cygwin DLLさえあれば使える。
…mswin32版との具体的な差が気になるところではあるけれども。
0599デフォルトの名無しさん
NGNG「これは見とけ」とか言うサイトや本ある?
もう、馬鹿でも分かるような。
0600デフォルトの名無しさん
NGNG「たのしいruby」あたりはどうかね。
0601名無しさん@xyzzy
NGNGhttp://www.ruby-lang.org/ja/
ユーザーズガイド
http://www.ruby-lang.org/ja/uguide/uguide00.html
リファレンスマニュアル
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
0602599
NGNGRubyのオフィシャルサイトはもちろん見ましたよー。
でもRubyって、どのサイトも
「プログラミングそこそこ理解できる」が前提みたいな感じで、
まるっきりの初心者対象にしたようなページはあまり見つからないんですよね。
その点で多少敷居が高いと感じたり…。
0603デフォルトの名無しさん
NGNGかばんなぁ。
ところで、「プログラミング初心者」であっても「コンピュータの初心者」じゃ
あないよな?
0604597
NGNGしかし、-ryaml するだけで重いんですよね。
そもそも Racc 自体が重いのかしら・・・?
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG結城 浩で「Ruby言語プログラミングレッスン」キボン
いや、Rubyはプログラミング初心者にはやさしいつくりではあるが、
解説書で初心者(他言語経験者を除く)にやさしいのはっていうとちょっと?だったりする。
他言語のいい初心者本からRubyにきたほうがいいかもって、本末転倒。
ひと頃と比べるとRuby本の出るペースも落ちてきてちょっとさびしい。
0608597
NGNGほかにも気になるところが沢山あるのですぐには使えないな・・・
もうちょっと調べてみよう。
0609デフォルトの名無しさん
NGNG詳しくレポートきぼん。
量が多ければruby-bugsかruby-devへ。
0610599
NGNGどのくらいの知識と経験を積めば「コンピュータの初心者」から脱出できるのか
分からないので何とも言えませんが、少なくとも、
PCを昨日今日買ってきたというレベルではありません。
以前、まつもとゆきひろ氏の「Rubyプログラミング入門」を入門書として購入しましたが
余計な注釈や、読みづらい本文で(゚Д゚)ポカーン
この本では「楽しいRuby」は無理だと感じました。
0611デフォルトの名無しさん
NGNG注釈云々からすると「オブジェクト指向スクリプト言語Ruby」(通称Ruby本)じゃ
ないかと思うが、あれはまったく初心者向けじゃないよ。
0612デフォルトの名無しさん
NGNGつーことね。
0613デフォルトの名無しさん
NGNG個人的経験からいうと、初心者向けのサイトを作ると覚えるよ。
■ このスレッドは過去ログ倉庫に格納されています