[ruby-list:149] Re: rml

From: matz@... (Yukihiro Matsumoto)
Date: 1996-02-14 07:56:38 UTC
List: ruby-list #149
まつもと ゆきひろ@トヨタケーラムです.

In message "[ruby-list:148] rml"
    on 96/02/14, P nakawtse <nakawtse@syrinx.dq.isl.ntt.jp> writes:
|  中渡@NTTです.
|------
|まつもと ゆきひろ@トヨタケーラムです.
|# やはりrubyでMLサーバを書くべきか.
|------
| 是非,実現を..(ユーザも増えるかも.)

考えてみましょう.すでにruby-archiveなんかrubyで書いてありま
すから,基礎はできていると思うので.

| # 1..10  1...10 はどう違うの?

普段は違いません.ifなどの条件式として現れた時に動作が変わっ
てきます.ifなどの条件式に現れた時,範囲式は

 左辺の条件が成立してから,右辺の条件が成立するまで真

という動作をします.`..'と`...'はこの時の右辺の条件を評価す
るタイミングが異なっています.

 ruby -ne 'print if 2 .. 2' file
 ruby -ne 'print if 2 ... 2' file

をしてみれば分かるかも知れません.つまり,`..'は左辺が成立し
た直後に右辺を評価しますが(だから1行も出力されない),`...'は
次に範囲式が評価されるまで右辺を評価しません.なんでも`..'は
awk的,`...'  はsed的な動作なんだそうです.

この辺の動作はperlからのものです.

と,思ったら.バグを見付けてしまった.あらら.

--- eval.c~	Fri Feb  2 19:12:30 1996
+++ eval.c	Wed Feb 14 16:52:00 1996
@@ -1006,2 +1006,2 @@
-		node->nd_state = rb_eval(self, node->nd_end)?0:1;
-		result = TRUE;
+	      node->nd_state = rb_eval(self, node->nd_end)?0:1;
+	      result = TRUE;
@@ -1009 +1009,3 @@
-	    result = FALSE;
+	    else {
+	      result = FALSE;
+	    }

In This Thread

Prev Next