[#7954] Doesn't build on Alpha — akira yamada / やまだあきら <akira@...>
8 messages
1999/10/02
[#7956] Re: Doesn't build on Alpha
— Shugo Maeda <shugo@...>
1999/10/02
前田@ruby-lang.org用のサーバ構築中です。
[#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
えぐち@エスアンドイーです。
[#8037] no bang method always returned unique?
— EGUCHI Osamu <eguchi@...>
1999/10/16
えぐち@エスアンドイーです。
[#8041] Re: no bang method always returned unique?
— matz@... (Yukihiro Matsumoto)
1999/10/16
まつもと ゆきひろです
[#8043] Re: no bang method always returned unique?
— EGUCHI Osamu <eguchi@...>
1999/10/17
えぐち@エスアンドイー です。
[#7991] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7994] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7995] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7996] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7997] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7998] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7972] socket.c Socket::Constants SOL_TCP — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
5 messages
1999/10/10
[#7974] [CYGWIN] bug? system() and socket — Shin-ichiro Hara <sinara@...>
原です。
5 messages
1999/10/10
[#7990] socks5 — とみたまさひろ <tommy@...>
とみたです。
16 messages
1999/10/12
[#7992] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#8003] Re: socks5
— とみたまさひろ <tommy@...>
1999/10/13
とみたです。
[#8004] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#8014] Re: socks5
— とみたまさひろ <tommy@...>
1999/10/13
とみたです。
[#8026] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/15
まつもと ゆきひろです
[#7993] prime numbers at st.c — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです.
2 messages
1999/10/13
[#8005] signal.c in cvs — Masaki Fukushima <fukusima@...>
福嶋です。
6 messages
1999/10/13
[#8020] [PATCH] Win32API — WATANABE Hirofumi <eban@...>
わたなべです.
9 messages
1999/10/14
[#8033] rb_compile_string and rb_load_protect — Masaki Suketa <CQN02273@...>
助田です.
6 messages
1999/10/16
[#8036] Re: rb_compile_string and rb_load_protect
— matz@... (Yukihiro Matsumoto)
1999/10/16
まつもと ゆきひろです
[#8038] [patch] build on sunos4 w/ VPATH fail — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイー です。
7 messages
1999/10/16
[#8045] signal exception semantics — nobu.nakada@...
なかだです。
7 messages
1999/10/17
[#8048] non terminated string — Minero Aoki <aamine@...>
あおきです。
5 messages
1999/10/17
[#8051] error.c for latest cygwin — WATANABE Hirofumi <eban@...>
わたなべです.
11 messages
1999/10/17
[#8053] Re: error.c for latest cygwin
— matz@... (Yukihiro Matsumoto)
1999/10/18
まつもと ゆきひろです
[#8157] Re: error.c for latest cygwin
— Katsuyuki Komatsu <komatsu@...>
1999/11/01
小松です。
[#8060] Re: [ruby-list:17813] Re: Exception.html & Errno.html for ruby-man-1.4.2-jp — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.そろそろruby-dev?
4 messages
1999/10/19
[#8078] [patch] File.lchmod and File.lchown — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
7 messages
1999/10/20
[#8080] Re: [patch] File.lchmod and File.lchown
— matz@... (Yukihiro Matsumoto)
1999/10/21
まつもと ゆきひろです
[#8081] Re: [patch] File.lchmod and File.lchown
— EGUCHI Osamu <eguchi@...>
1999/10/21
えぐち@エスアンドイー です。
[#8082] Ruby 1.4.2 with Tcl/Tk 8.2 — akira yamada / やまだあきら <akira@...>
9 messages
1999/10/21
[#8129] Re: Ruby 1.4.2 with Tcl/Tk 8.2
— akira yamada / やまだあきら <akira@...>
1999/10/28
[#8090] Re: [ruby-list:17940] Enumerable#collect — Takashi Ikeda <cercine@...>
池田孝志です。
11 messages
1999/10/22
[#8097] Re: [ruby-list:17940] Enumerable#collect
— nobu.nakada@...
1999/10/23
なかだです。
[#8098] Re: [ruby-list:17940] Enumerable#collect
— Takashi Ikeda <cercine@...>
1999/10/23
池田孝志です。
[#8100] Re: [ruby-list:17940] Enumerable#collect
— EGUCHI Osamu <eguchi@...>
1999/10/23
えぐち@エスアンドイー です。
[#8106] Re: [ruby-list:17940] Enumerable#collect
— matz@... (Yukihiro Matsumoto)
1999/10/23
まつもと ゆきひろです
[#8091] named argument? — ttate@...
立石です。
7 messages
1999/10/22
[#8108] Re: [ruby-list:17963] Re: bug? system — ttate@...
立石です。
5 messages
1999/10/23
[#8137] multiple conditional switch — kjana@... (YANAGAWA Kazuhisa)
♪昨日手紙が.... じゃなくて (^^; 今日 ruby 本が届きました.どうもあり
8 messages
1999/10/29
[#8152] Ruby 1.5 (cvs) irb, cgi.rb — Wakou Aoyama <wakou@...>
青山です。
5 messages
1999/10/30
[ruby-dev:7968] array .{first, last, at}
From:
Kazunori NISHI <kazunori@...>
Date:
1999-10-07 08:21:45 UTC
List:
ruby-dev #7968
西@九大です。
配列の先頭と末尾を参照するメソッドが欲しいです。
first = (object .to_a)[0]
last = (object .to_a)[-1]
よりも
first = object .to_a .first
last = object .to_a .last
の方が読みやすいと思います。
user = (mail_addr .split('@'))[0]
みたいな場合も、split まで書いた時点で、あー、前に戻って'('を打つのが
面倒だー、
user = mail_addr .split('@') .first
とかやりてー。とよく思います。(可読性じゃなかったの?)
こういう場合、{pop, shift} で大丈夫なのですが、
* 配列を破壊したくない
* メッセージで何とかしたい
* でも、array .dup .pop は高価過ぎるよー
という経験がよくあります。とても欲しいです。
イメージ的には、
class Array
alias at []
def first (index = 0)
self[index]
end
def last (index = 0)
self[self .size - index]
end
end
みたいな感じです。最悪 .at だけでもあると嬉しいです。
どうでしょうか?
------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
西 和則 ( e-mail: kazunori@swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------
#とりあえず、パッチを作ってみました。
*** array.c.orig Fri Aug 13 14:45:02 1999
--- array.c Thu Oct 7 17:13:34 1999
***************
*** 417,422 ****
--- 417,450 ----
}
static VALUE
+ rb_ary_aref_method(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
+ {
+ if (argc == 0)
+ return rb_ary_entry(ary, 0);
+
+ return rb_ary_aref(argc, argv, ary);
+ }
+
+ static VALUE
+ rb_ary_aref_last(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
+ {
+ VALUE arg1;
+ long offset;
+
+ if (rb_scan_args(argc, argv, "01", &arg1) == 0)
+ return rb_ary_entry(ary, -1);
+
+ offset = - (NUM2LONG(arg1) + 1);
+ return rb_ary_entry(ary, offset);
+ }
+
+ static VALUE
rb_ary_index(ary, val)
VALUE ary;
VALUE val;
***************
*** 1444,1449 ****
--- 1472,1480 ----
rb_define_method(rb_cArray, "===", rb_ary_equal, 1);
rb_define_method(rb_cArray, "[]", rb_ary_aref, -1);
+ rb_define_alias(rb_cArray, "at", "[]");
+ rb_define_method(rb_cArray, "first", rb_ary_aref_method, -1);
+ rb_define_method(rb_cArray, "last", rb_ary_aref_last, -1);
rb_define_method(rb_cArray, "[]=", rb_ary_aset, -1);
rb_define_method(rb_cArray, "concat", rb_ary_concat, 1);
rb_define_method(rb_cArray, "<<", rb_ary_push, 1);