From: Ryuichi Tamura Date: 1999-10-06T09:52:12+09:00 Subject: [ruby-dev:7965] [PATCH?] ArgumentError in 'test' with 3 args 田村龍一と申します.このようなことを投稿するのは初めてで,要領を得ない ところがありましたら御容赦ください. 3つの引数をとる test(cmd, file1, file2) の挙動が2つの引数をとる場合と 違っています: -rw-r--r-- 1 tam tam 6298 Oct 5 04:20 .emacs -rw-r--r-- 1 tam tam 14093 Sep 12 21:11 .jedrc という2つのファイルに対してfalseを期待して '?=', '?>', '?<' の3つのテ ストを行なうと, irb(main):064:0> test(?>,'/home/tam/.jedrc','/home/tam/.emacs') ArgumentError: unknown command ?> (irb):64:in `test' (irb):64:in `irb_binding' irb(main):065:0> test(?<,'/home/tam/.emacs','/home/tam/.jedrc') ArgumentError: unknown command ?< (irb):65:in `test' (irb):65:in `irb_binding' irb(main):066:0> test(?=,'/home/tam/.emacs','/home/tam/.jedrc') ArgumentError: unknown command ?= (irb):66:in `test' (irb):66:in `irb_binding' と,ことごとくArgumentError で叱られてしまいます.ここでは2つの引数の ときと同様 'false' が返されると期待してしまうのはいけないのでしょうか…. すなわち,`file.c` の `test_b()` などでの値の戻しかたと同様に, --- archive/ruby-1.4.2/file.c Thu Sep 16 18:40:32 1999 +++ ruby-1.4.2/file.c Wed Oct 6 08:25:58 1999 @@ -1521,20 +1521,20 @@ case '-': if (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino) return Qtrue; - break; - + return Qfalse; + case '=': if (st1.st_mtime == st2.st_mtime) return Qtrue; - break; - + return Qfalse; + case '>': if (st1.st_mtime > st2.st_mtime) return Qtrue; - break; - + return Qfalse; + case '<': if (st1.st_mtime < st2.st_mtime) return Qtrue; - break; - } + return Qfalse; + } } /* unknown command */ rb_raise(rb_eArgError, "unknown command ?%c", cmd); としたらいけないのでしょうか?? -- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ Ryuichi Tamura Department of Natural Resource Economics, Kyoto University, Kyoto, JAPAN. e-mail : tam@kappa3.kais.kyoto-u.ac.jp URL : http://kappa3.kais.kyoto-u.ac.jp/~tam/ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛