2016-11-11 29 views
0

私はemacs-requestを使用してウェブからjsonデータを取得しています。ここでは例コールバック関数から他の引数にアクセスする方法

(defun test (arg1 arg2) 
    (request 
    "http://httpbin.org/get" 
    :params '(("key" . "value") ("key2" . "value2")) 
    :parser 'json-read 
    :success (cl-function 
      (lambda (&key data &allow-other-keys) 
       (message "I sent: %S" (assoc-default 'args data)))))) 

は、私は、このような:successとしてコールバック関数は、引数1とarg2のにアクセスすることができますどのように思ったんだけどですか?

答えて

1

あなたは、ラムダは外側の関数の引数へのアクセス権を持っている、またはラムダのための外側の関数の引数をバインドlexical-let:success機能をラップすることができ、tlexical-binding variableを設定することができ、次のいずれか

(defun test (arg1 arg2) 
    (request 
    "http://httpbin.org/get" 
    :params '(("key" . "value") ("key2" . "value2")) 
    :parser 'json-read 
    :success (lexical-let ((arg1 arg1) (arg2 arg2)) 
       (cl-function 
       (lambda (&key data &allow-other-keys) 
       (message "%s %s sent: %S" arg1 arg2 (assoc-default 'args data))))))) 
関連する問題