[#36058] Windows で Thread — rio-t@...
こんにちは、高石です。
14 messages
2002/10/01
[#36059] Re: Windows で Thread
— "U.Nakamura" <usa@...>
2002/10/01
こんにちは、なかむら(う)です。
[#36060] Re: Windows で Thread
— rio-t@...
2002/10/01
こんにちは、高石です。
[#36061] Re: Windows で Thread
— Tietew <tietew-ml-ruby-list@...>
2002/10/01
[#36069] 日本語に混じった URL を抜き出したい — keiichi matsunaga <ma2@...>
松永です。
26 messages
2002/10/02
[#36072] Re: 日本語に混じった URL を抜き出したい
— keiichi matsunaga <ma2@...>
2002/10/02
松永です。
[#36073] Re: 日本語に混じった URL を抜き出したい
— SAITO Shukaku <shukaku@...>
2002/10/02
At Wed, 2 Oct 2002 13:51:42 +0900,
[#36074] Re: 日本語に混じった URL を抜き出したい
— Tatsuhiko Miyagawa <miyagawa@...>
2002/10/02
宮川です。
[#36106] Ruby Weekly News mail archive on blade? — Tanaka Akira <akr@...17n.org>
ふと気がついたんですが、Ruby Weekly News は blade には archive されな
7 messages
2002/10/05
[#36114] RubyのXML対応に関する質問 — Shibukawa Yoshiki <yoshiki@...>
渋川です。
5 messages
2002/10/06
[#36117] 閉じたbinding — Takashi Tsugoh <tks@...>
こんばんは、Tsugohです。
7 messages
2002/10/06
[#36140] rindaで例外を通知する方法? — SAITO Shukaku <shukaku@...>
rindaとwebrickを使ってweb用アプリケーション(と言うのかな?)を作っていま
8 messages
2002/10/11
[#36161] gc_sweepでアボート — 原田 潤 <j-harada@...4u.or.jp>
原田と申します。
10 messages
2002/10/17
[#36178] utf-8 対応 nkf 拡張モジュールについて — たむらけんいち <sgs02516@...>
たむらです。御相談。
9 messages
2002/10/20
[#36186] csvweb.cgi error — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
5 messages
2002/10/21
[#36188] Re: 日本語の字を書くGUIプログラム — Philip Mak <pmak0@...>
--- Philip Mak <pmak0@yahoo.com> wrote:
4 messages
2002/10/21
[#36192] RUBY_PLATFORM にはどんなものがある? — Take_tk <ggb03124@...>
たけ(tk)です
5 messages
2002/10/23
[#36205] [ANN] Ruby/Qte 0.2 — HIDAKA Takahiro <cv8t-hdk@...>
ひだかです。
10 messages
2002/10/27
[#36217] Re: Ruby/Qte 0.2
— SAITO Shukaku <shukaku@...>
2002/10/28
At Sun, 27 Oct 2002 14:03:33 +0900,
[#36226] Re: Ruby/Qte 0.2
— HIDAKA Takahiro <cv8t-hdk@...>
2002/10/29
ひだかです。
[ruby-list:36121] Re: 閉じたbinding
From:
Takashi Tsugoh <tks@...>
Date:
2002-10-06 16:48:46 UTC
List:
ruby-list #36121
こんばんは、Tsugohです。
>>> Quoted from "[ruby-list:36119] Re: 閉じた binding"
>>> ( on 2002/10/07 0:30:06 JST / by UENO Katsuhiro )
>ええと、僕も同じようなことを考えて書いたコードがあります。
> http://www.blue.sky.or.jp/atelier/ruby/wakaba/wakaba-0.1.0.tar.gz
>の中の lib/wakaba/pbinding.rb ってファイルです。
参照させて頂きました。
なるほど…、特異クラスを作り、その中で、メタ機能により削除可能な定数を経由して
ローカル変数を生成するという方法なんですね。
こんなやり方があったとは、目から鱗が落ちます。
参考にさせて頂いた上でとりあえず簡易版を作ってみました。
def protected_binding( params = {} )
raise ArgumentError unless Hash === params
klass = class << self; self; end
klass.module_eval 'def jail_binding; binding; end'
b = jail_binding
unless params.empty? then
carrier = :Variables
klass.module_eval { const_set carrier, params }
eval params.keys.collect{ |k| "#{k}=#{carrier}[#{k.dump}];" }.join, b
klass.module_eval { remove_const carrier }
end
klass.module_eval {
remove_method :jail_binding
const_set :TOPLEVEL_BINDING, b
}
b
end
hash = { 'foo' => 'foo', 'bar' => 100, 'baz' => Proc.new{nil} }
eval 'p local_variables.collect{|v| [v, eval v]}',
protected_binding( hash )
# => [["baz", #<Proc:0x2acce8c4>], ["foo", "foo"], ["bar", 100]]
あとは Wakaba::ProtectedEval の様に、ローカル変数として使える key を
チェックしたり Symbol も使えるようにすればかなり奇麗になりそうです。
ただ、ソースを読ませて頂いていて二つほどわからないことがありました。
1) protected_binding の最後で
klass.module_eval{ :TOPLEVEL_BINDING, b }
とされているのはどういう理由なんでしょうか?
勉強不足のため理解できていません(汗)
(簡易版ではわからないままに付けています(^^;)
2) Wakaba::ProtectedBinding で
carrier << '_' while parameters.key? carrier
としていますが、これも理解できてません(汗)
(簡易版では省いてみました。)
もしよろしければお返事をお願いします。
# もし他にも方法がありお時間に余裕があれば、皆さん是非ご教授ください。
# 勉強させて頂きます(^^;;
-----
Tsugoh
mailto:tks@xxxx-xx.xx