[Gauche-devel-jp] fallback for ref

アーカイブの一覧に戻る

Masatake YAMATO yamat****@redha*****
2010年 3月 30日 (火) 03:49:15 JST


listのrefにfallbackがあると便利だと思うのですが、いかがでしょう。
vectorとstringも無視できなかったので。

大和

Index: objlib.scm
===================================================================
--- objlib.scm	(revision 7083)
+++ objlib.scm	(working copy)
@@ -678,10 +678,21 @@
 ;; shortcuts would be faster.
 (define-method ref ((obj <list>) (index <integer>))
   (list-ref obj index))
+(define-method ref ((obj <list>) (index <integer>) value)
+  (if (< index (length obj))
+      (list-ref obj index)
+      value))
+(define-method ref ((obj <null>) (index <integer>) value)
+  value)
+
 (define-method ref ((obj <vector>) (index <integer>))
   (vector-ref obj index))
+(define-method ref ((obj <vector>) (index <integer>) value)
+  (vector-ref obj index value))
 (define-method ref ((obj <string>) (index <integer>))
   (string-ref obj index))
+(define-method ref ((obj <string>) (index <integer>) value)
+  (string-ref obj index value))
 (define-method (setter ref) ((obj <vector>) (index <integer>) val)
   (vector-set! obj index val))
 (define-method (setter ref) ((obj <string>) (index <integer>) val)




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る