[#954] Rational — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

23 messages 1996/10/30
[#955] Re: Rational — matz@... (Yukihiro Matsumoto) 1996/10/30

まつもと ゆきひろです.

[#968] Re: Rational 1996/10/31

けいじゅ@SHLジャパンです.

[ruby-list:839] Re: ruby 0.99.2-961011 available

From: matz@... (Yukihiro Matsumoto)
Date: 1996-10-14 01:20:14 UTC
List: ruby-list #839
まつもと ゆきひろです

In message "[ruby-list:836] Re: ruby 0.99.2-961011 available"
    on 96/10/12, Jun Kuroda <j_kuro@pluto.ai.kyutech.ac.jp> writes:
|
|黒田です.

|/usr/local/lib/ruby/tk.rb:59:in `[]=': undefined method `(null)' for #<IO:0x6a4b8>(IO)
|
|と言います.

文字列とFixnum以外をキーとした場合の動作が不良でした。原因は
大域変数と同じ名前のローカル変数を定義してしまったためです
(恥ずかしい)。このメイルにつけたパッチで直ります。

|いつの version からかわかりませんが ruby-mode.el が
|
|    if (FileTest.exists?(fname) && (is_cgi == FALSE))
|       ^                      ^
|この () を組と思っているようです.

# exist?を使ってくださいね。exists?は1.0でなくなります。

これはインデントは正しいがemacsが括弧の対応を間違っていると
いうものですよね。これはちょっと深い問題があります。というの
もrubyでは?はメソッド名の一部という働きと,文字定数の記号と
いう2種類の役目があります。今回は文字定数としてemacsのsyntax
を定義してしまったため,exists?(の括弧を無視してしまったので
す。とりあえずは?のsyntax定義を外せば元に戻りますが,今度は

  printf "%c\n", ?(

のような場合で困るでしょう。

  printf "%c\n", ?\(

と書けば良いことですが。一応パッチではそのようにしておきます
が,もうちょっと考えたいと思います。

  * この対応で十分
  * メソッド名に?をいれるのはやはり良くない
  * 文字定数が?で始まるのは良くない

などが考えられます。文字定数を表す文字も替えるとすると良い記
号が思い付かないのも確かなんですが。

                                まつもと ゆきひろ /:|)

--- hash.c~	Fri Oct 11 14:34:26 1996
+++ hash.c	Sun Oct 13 01:06:20 1996
@@ -55,3 +55,3 @@
 {
-    unsigned int hash;
+    unsigned int hval;
 
@@ -59,3 +59,3 @@
       case T_FIXNUM:
-	hash = a;
+	hval = a;
 	break;
@@ -63,3 +63,3 @@
       case T_STRING:
-	hash = str_hash(a);
+	hval = str_hash(a);
 	break;
@@ -67,6 +67,6 @@
       default:
-	hash = rb_funcall(a, hash, 0);
-	hash = FIX2INT(hash);
+	hval = rb_funcall(a, hash, 0);
+	hval = FIX2INT(hval);
     }
-    return  hash % mod;
+    return  hval % mod;
 }
--- sample/ruby-mode.el~	Mon Sep 30 11:10:26 1996
+++ sample/ruby-mode.el	Mon Oct 14 09:12:19 1996
@@ -75 +75 @@
-  (modify-syntax-entry ?? "/" ruby-mode-syntax-table)
+  (modify-syntax-entry ?? "_" ruby-mode-syntax-table)




In This Thread

Prev Next