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)