challenge メソッドのフック

例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。

そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。

Posted feedbacks - Scheme

少しオーバースペックですが dynamic-wind を使うと関数への出入り(通常の呼び出し・終了、継続を使った脱出・再入)にフックをかけることができます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
(define (add-hook body before after)
  (lambda args
    (dynamic-wind
        before
        (lambda () (apply body args))
        after)))

(define f
  (add-hook display
            (lambda () (display "I have "))
            (lambda () (display " sisters.") (newline))))

(f 19)
;; -| I have 19 sisters.

Index

Feed

Other

Link

Pathtraq

loading...