[#7968] array .{first, last, at} — Kazunori NISHI <kazunori@...>

西@九大です。

25 messages 1999/10/07
[#7969] Re: array .{first, last, at} — nobu.nakada@... 1999/10/07

なかだです。

[#7983] Re: array .{first, last, at} — Kazunori NISHI <kazunori@...> 1999/10/12

西@九大です。

[#7984] Re: array .{first, last, at} — matz@... (Yukihiro Matsumoto) 1999/10/12

まつもと ゆきひろです

[#7985] [patch] Array#delete_at w/ minus value — EGUCHI Osamu <eguchi@...> 1999/10/12

えぐち@エスアンドイーです。

[ruby-dev:8134] Re: Time accurate usec

From: matz@... (Yukihiro Matsumoto)
Date: 1999-10-29 08:01:14 UTC
List: ruby-dev #8134
まつもと ゆきひろです

In message "[ruby-dev:8133] Time accurate usec"
    on 99/10/29, Masaki Fukushima <fukusima@goto.info.waseda.ac.jp> writes:

|秒数をFloatで指定できますが、浮動小数点を介すると誤差のせいで指定
|できない値があるようです。

なるほど、気がつきませんでした。

|そこで、
|
|  Time.at(sec, usec)
|
|または
|
|  Time.at([sec, usec])
|
|のような形でマイクロ秒を直接指定できると嬉しいのですが。

了解です。1.5系ではそのようにしましょう。形式は

  Time.at(sec[, usec])

とします。2つ引数を指定した場合には双方が整数である必要があ
ります。パッチもつけておきます。

|後者の形式だとrb_time_interval()を書き換えれば、selectのtimeoutな
|ども同様の形式を許すようになりますね。

これはちょっと魅力かとも思ったんですが、より分かりにくくなる
のみなので、採用しませんでした。

|Ruby本買いました。
|内容が充実し過ぎです ^_^;  初心者に勧めるにはちょっとheavyかなぁ...

だって初心者向けの本じゃないもん(開き直り)。
なんてね、分からないうちは分かるところだけ読むと言うのでどう
でしょうか?

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

--- time.c	1999/10/04 04:51:06	1.4
+++ time.c	1999/10/29 07:57:25
@@ -154,9 +154,17 @@
 static VALUE
-time_s_at(klass, time)
-    VALUE klass, time;
+time_s_at(argc, argv, klass)
+    int argc;
+    VALUE *argv;
+    VALUE klass;
 {
     struct timeval tv;
-    VALUE t;
+    VALUE time, t;
 
-    tv = rb_time_timeval(time);
+    if (rb_scan_args(argc, argv, "11", &time, &t) == 2) {
+	tv.tv_sec = NUM2INT(time);
+	tv.tv_usec = NUM2INT(t);
+    }
+    else {
+	tv = rb_time_timeval(time);
+    }
     t = time_new_internal(klass, tv.tv_sec, tv.tv_usec);
@@ -980,3 +988,3 @@
     rb_define_singleton_method(rb_cTime, "new", time_s_now, 0);
-    rb_define_singleton_method(rb_cTime, "at", time_s_at, 1);
+    rb_define_singleton_method(rb_cTime, "at", time_s_at, -1);
     rb_define_singleton_method(rb_cTime, "gm", time_s_timegm, -1);

In This Thread