[ruby-list:50485] Re: [質問] Thread.stop が無い?
From:
Masaki Suketa <masaki.suketa@...>
Date:
2017-02-16 15:51:54 UTC
List:
ruby-list #50485
助田です。 On Thu, Feb 16, 2017 at 05:35:46PM +0900, yamataka@u08.itscom.net wrote: > In main thread > In ssdp thread > ./thread.rb:12:in `block in <main>': undefined method `stop' for #< > Thread:0x00000600486ec0@./thread.rb:5 dead> (NoMethodError) > from ./thread.rb:9:in `loop' > from ./thread.rb:9:in `<main>' > > 実行すると、stopメソッドが無いとの事でエラーになってしまいます。 > https://docs.ruby-lang.org/ja/2.2.0/class/Thread.html > を参照すると、stop メソッドがある様なのですが… > > pp ssdp.methods で method を出力させてみましたが、stop method が有りませ > ん。 > 何か勘違いをしているか、ご教示お願いできますでしょうか? > Thread の特異メソッドとインスタンスメソッドを混同されている と思います。 参照先のドキュメントを確認すれば、 目次の 「特異メソッド」の欄に stop があり 「インスタンスメソッド」の欄には、stop がない ことがわかると思います。 Thread.stop というコードであれば Thread クラスの 特異メソッドである stop を実行しようとします。 この場合は、エラーになりません。 一方、ssdp は Thread クラスのインスタンスであるため、 ssdp.stop というコードだと Thread クラスのインスタンスメソッド stop を 実行しようとすることになります。 ですが、Thread にはインスタンスメソッドの stop が存在しない ためエラーになります。 助田