2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Emacs Lispの funcall と apply の違いについて調べた

Last updated at Posted at 2022-04-23

Emacsで request.el を使ってAPIを叩くプログラムを作成するため、いわゆるコールバック函数を実現する方法を調べてました。

ある函数の引数に、コールバックさせたい函数を渡し、それを実行させればよいのですが、それには2つの方法があります。

引数 cbfunc にコールバック函数が設定されているとき、

(funcall cbfunc)

または

(apply cbfunc)

のどちらかで 引数が示す函数を呼び出しすことができます。

ここで funcallapply の違いが分からず悩みました。函数の定義はどちらも同じです。

Function: funcall function &rest arguments

Function: apply function &rest arguments

これらが使われているいろいろなソースコードを読んだりし、小一時間は悩みました。

・・・が、結局のところマニュアルに書いてあったではないですか。

逆に言えば、 実行時にいくつの引数を渡すか決まっている時は、funcallを使用すればよい わけですね。

ドキュメントはきちんと読みましょう、でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?