[#46143] るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — eiichi_maekawa@...

62 messages 2009/07/02
[#46153] Re: るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — "NARUSE, Yui" <naruse@...> 2009/07/03

成瀬です。

[#46165] Re: に関する1.8.6→1.8.7または、1.9へのバージョンアップ — eiichi_maekawa@... 2009/07/05

前川です。

[#46281] rubyの変数の扱いについて — "前川 映一" <eiichi_maekawa@...> 2009/08/17

前川です。

[#46283] Re: rubyの変数の扱いについて — "(株)ネットフォレスト 植田裕之" <ueda@...> 2009/08/17

植田と申します。

[#46146] 文字変換 — eiichi_maekawa@...

16 messages 2009/07/03
[#46147] Re: 文字変換 — Hidetoshi NAGAI <nagai@...> 2009/07/03

永井@知能.九工大です.

[#46148] Re: 文字変換 — eiichi_maekawa@... 2009/07/03

前川です。

[ruby-list:46233] Re: Ruby/Tkについての質問

From: AkihitoWatanabe <watanabea0611@...>
Date: 2009-07-21 08:23:19 UTC
List: ruby-list #46233
ワタナベです。

"require 'tk/canvas'" でエラーが出なくなりました。
一度、Ruby/Tkの方も新しいものを導入してみようと思います。
ありがとうございました。

On 2009/07/17, at 0:14, Hidetoshi NAGAI wrote:

> 永井@知能.九工大です.
>
> From: AkihitoWatanabe <watanabea0611@cap.bbiq.jp>
> Subject: [ruby-list:46214] Ruby/Tkについての質問
> Date: Thu, 16 Jul 2009 16:04:49 +0900
> Message-ID: <23BEEE81-1022-4BD5-A874-438B4B689515@cap.bbiq.jp>
>> TkLineをスーパークラスとして新規クラスを定義した場合に
>>  uninitialized constant TkcLine (NameError)
>> というエラーがでます。どうしてでしょうか。
>> 色々調べてみたのですが、分かりません。
>> TkBottunをスーパークラスとして作成したクラスを定義した場合には
>> 問題はありませんでした。
>
> この問題については,より新しいバージョンの Ruby/Tk で 
> は修正済みです.
> まず先に回避策を述べた上で,なぜそうなっているのかを説明します.
>
> 回避策としては,"require 'tk'" の後に
> "require 'tk/canvas'" を加えてください.
> そうしたものを問題修正済みの Ruby/Tk で実行しても問題 
> はありません.
>
> Ruby/Tk 全体は結構大きなものですので,
> 使いもしないウィジェットのための定義をすべて読み込んだりいると
> 大変なことになります.
> そのため,autoload の機構を利用して,クラスが最初に参 
> 照されたときに
> 必要ファイルを require するようになっています.
> ご利用の Ruby のバージョンがいくつかはわかりませんが,
> 多分 <rubyライブラリ>/tk/autoload.rb というファ 
> イルがあるはずです.
> このファイルで基本の autoload 定義がなされています.
> たとえば "class FUGA < TkButton" とすると,
> この時点で TkButton クラスが参照されていることになり,
> autoload によって tk/button.rb が読みこまれ,
> TkButton クラスが定義されるということになります.
>
> で,古いバージョンのものでは,TkCanvas についての  
> autoload 定義は
> なされていたのですが,キャンバスアイテムの定義がありません 
> でした.
> キャンバスアイテムの定義は TkCanvas の定義を行ってい 
> るファイルと
> 同一のファイル中で行っているため,手抜いていたわけです.
> キャンバスアイテムを使うためにはキャンバスオブジェクトが必 
> 要だから,
> TkCanvas クラスが参照された時点で読み込まれるだろうと考えた 
> わけです.
>
> ですが,canvas ウィジェットを生成する前に
> キャンバスアイテムのサブクラスを新たに定義しようとした場合,
> TkCanvas に対する autoload が働いていませんから
> キャンバスアイテムクラスが定義されていないというエラーにな 
> ります.
> よって "require 'tk/canvas'" というように
> 明示して読み込んでやる必要があります.
>
> 新しいバージョンのものでは tk/autoload.rb に
> キャンバスアイテムクラスも加えられましたので,
> キャンバスアイテムのサブクラスを定義しようとした際に
> tk/canvas.rb が読み込まれて定義されるため,問題は生じません.
> -- 
> 永井 秀利  (nagai@ai.kyutech.ac.jp)
> 九州工業大学 大学院情報工学研究院 知能情報工学研究 
> 系 知能情報メディア部門
>
>

----------------------------------------------------
Akihito Watanabe
e-mail:watanabea0611@cap.bbiq.jp
----------------------------------------------------




In This Thread

Prev Next