[#48683] klass と Marshal.load(Marshal.dump klass) が同じにならない — dezawa <dezawa@...>
出沢です
5 messages
2012/04/06
[#48689] 日時の文字列をTimeクラスに変換したい — ichirojiro@...
ichirojiroです
7 messages
2012/04/09
[#48710] 多言語を含むUTF-8テキストから文字種を判定する方法 — えだ ゆきひこ <eda@...>
えだです。
7 messages
2012/04/25
[#48711] Re: 多言語を含むUTF-8テキストから文字種を判定する方法
— "NARUSE, Yui" <naruse@...>
2012/04/25
2012年4月25日11:19 えだ ゆきひこ <eda@nerv.org>:
[ruby-list:48705] Re: undefined method `+' for nil:NilClass (NoMethodError)
From:
"y. nobuoka" <nobuoka@...>
Date:
2012-04-21 07:44:45 UTC
List:
ruby-list #48705
初めまして、信岡です。 dxruby についてよく知らないので何か他の問題があるのかもしれませんが、 NoMethodError が発生するのは単純に変数のスコープの問題だと思います。 Ruby においては、メソッドの外で定義された局所変数はメソッドの中からは参照することが 出来ないので (ここ重要です)、4 行目の fpscnt = 0 として 0 で初期化している fpscnt という変数と、update というメソッドの中で fpscnt += 1 として使われている変数は別物です。 メソッド内の fpscnt は明示的な初期化がなく使われているので nil で初期化されます。 そして fpscnt += 1 の部分で nil に対して + メソッドを呼び出していることになるので、 > C:/Ruby193/scene_sample2.rb:15:in `update': undefined method `+' for nil:NilClass (NoMethodError) というエラーが発生するのだと思います。 (局所変数のスコープについてのドキュメントを探してみましたがすぐには 見つかりませんでした。) とりあえずグローバルに使える変数を使いたい、ということであれば、 変数名として fpscnt の代わりに $fpscnt を使うと良いかと思います。 Ruby では、"$" 記号ではじまる変数名はグローバル変数となります。 参考 : http://ruby-doc.org/docs/ProgrammingRuby/html/language.html#S3 -- 信岡 ゆう (NOBUOKA Yu)