[#17615] substitution at when-clause — Takaaki Tateishi <ttate@...>
立石です.
まつもと ゆきひろです
At Tue, 2 Jul 2002 02:54:01 +0900,
まつもと ゆきひろです
At Tue, 2 Jul 2002 13:30:17 +0900,
まつもと ゆきひろです
立石です.
まつもと ゆきひろです
青山です。
立石です.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
At Wed, 3 Jul 2002 17:48:58 +0900,
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#17625] Re: Getting CGI arguments as scalars — Wakou Aoyama <wakou@...>
青山です。
[#17662] update irb to cvs repository — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
In article <200207041003.TAA06746.keiju@ishitsuka.com>,
けいじゅ@日本ラショナルソフトウェアです.
[#17676] generation GC — Minero Aoki <aamine@...>
あおきです。
[#17706] self in block — masaki <GEC01122@...>
[#17714] Re: self in block — masaki <GEC01122@...>
[#17722] Re: self in block — masaki <GEC01122@...>
[#17725] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027176584.577546.14709.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
At Sun, 21 Jul 2002 01:10:02 +0900,
まつもと ゆきひろです
[#17730] Re: self in block — masaki <GEC01122@...>
At Sat, 20 Jul 2002 21:27:58 +0900,
高橋征義です。
けいじゅ@日本ラショナルソフトウェアです.
[#17764] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027383423.558649.31176.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027404202.545188.1283.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027406979.880878.1358.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027409151.187595.1406.nullmailer@picachu.netlab.jp>,
前田です。
In article <87bs8xkfqr.wl@studly.priv.netlab.jp>,
前田です。
[#17774] Re: self in block — masaki <GEC01122@...>
[#17832] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#17840] Re: new mathn [Re: Rational#to_int ← String#center] — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
[#17851] undef_method ? — Shin-ichiro HARA <sinara@...>
原です。
[#17855] non-blocking IO — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
[#17867] parenthesize argument(s) for future version — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
[ruby-dev:17764] Re: self in block
正木です。
In message "[ruby-dev:17762] Re: self in block"
matz@ruby-lang.org (Yukihiro Matsumoto) writes:
|"initialize に {<x,...> ...} の形で与えられた block に対しては、
|その context を、initialize の中での context にする。
|
|よくわからないんですが、
|
| Foo.new {<a,b,c>
| ...
| }
|
|の場合には、ブロック内部での
|
| * selfはFooのインスタンス
| * @fooはFooのインスタンス変数
| * foo()はFooのメソッド呼び出し
|
|になるということでしょうか。とするとたとえば、
その通りです。ただし @foo はこの段階では未定義のはずですが。
| @title = "widget title"
| Foo.new {<>
| set_title @title
| }
|
|のようなものは動かないってことですよね。こういう場合には
|
| @title = "widget title"
| Foo.new {||
| set_title @title
| }
|
|としろということでしょうか。なんだか <> に複数の意味を与えて
|いるので混乱しそうな気がします。
なにが混乱するのか全然分かりません。
というより、上の script の意図が全く分かりません。
もしこれが、なにか別の class の method 定義のなかというのでなければ
@title = "widget title"
の所で error になりそうですが?
ひょっとして
class Foo
def initialize(title)
@title=title
end
end
Foo.new("widget title")
と同じことを block を使ってやりたいということですか?
いづれにしても <> を使うべき case ではなさそうです。
|それと
|
| $SAFE=1 のときにはこの機能は使えない。
これは {<> ...} という構文は error にするという意味です。
さらに安全を期すために
"{<> ...} という構文の block 中に @ で始まる変数名があれば error にする"
を追加します。
これで
Foo.new{<> p @@foo}
のような情報漏洩に結び付きそうなものを排除できます。
|ってのは理由もよくわからないのですが
基本的に外部情報は大域変数と定数以外使えない仕様なので、security 上の
問題はないはずですが、新しい機能の追加が security hole になるのを心配
する人のための安全保証のつもりです。
| @title = "widget title"
| Foo.new {<>
| set_title @title
| }
|
|という同じプログラムが、$SAFEの値によって挙動が変化すること
|になると思うので、かなりまずい仕様だと思います。
問題の program は $SAFE の値の如何に関わらず error になります。
|私、正木さんが実現したいことがいまだによくわからないんですが。
|なにか読み落としているのでしょうか。
以前に書いたことの繰り返しになりますが、
次の
def initialize
@lambda=eval "lambda{"+yield+"}"
end
を
def initialize(&block)
@lambda=block
end
のようにすっきり書きたいということです。
要するに、原さんに
|しかし、lambda の上に eval までされると、いよいよ頭がぐちゃぐちゃ
|に、、、(^^;
と言われたくないということです。(勿論これは冗談です)
block を文字列で与える必要もなくなります。
いまは eval と文字列を利用して同等の機能を実現しているわけですが、
Proc については上の手法は使えない(initialize を書き換えるわけには
いかない)ため、新仕様で可能な
Proc.new{<n> n==0 ? 1:n*self[n-1]}
が現在はできません。
他の人にとっても、
自己参照もできる無名関数が簡単にできるというだけでも非常に有用だ
と思います。
それとひきかえに失うものが、実装するための苦労も含めて非常に大きく、
しかもそれに対する対策もないということを示していただければ、私の
提案はすぐに取り下げます。