2

sbeで関数を使用する例を誰でも挙げることができますob-table.elか? まっすぐなelispで動作させることができなかったので、何かが欠けているに違いありません。

#+name: add1(x=1) :results silent
#+begin_src python
return x + 1
#+end_src

これは機能します:

| 1 | 2 | 3 | 4 |
#+TBLFM: @1$4='(sbe add1 (x $3))

しかし、これはしません:

#+begin_src emacs-lisp
(sbe add1 (x 2))
#+end_src

エラー: 間違った型の引数: sequencep、2

2 をリストに変更すると、さらに悪化します。

#+begin_src emacs-lisp
(sbe add1 (x (list 2))
#+end_src

エラー: 間違った型引数: buffer-or-string-p, 2

4

1 に答える 1

1

私があなたの質問を正しく理解しているなら、あなたは結果を呼び出すためにテーブルの外であなたの名前付きソースブロックを使用しようとしています。

まず第一に、あなたはラインに:results silent属しており、ではありません(あなたがそのブロックを直接評価した場合にのみ関係します)。このマシンにPythonがないため、Pythonからemacs-lispに切り替えています。それ以外の場合はブロックを評価できません。それ以外の場合、関数は同等のままです。#+begin_src#+name

#+name: add1(x=1)
#+begin_src emacs-lisp :results silent
  (+ x 1)
#+end_src

組織テーブルでは、適切なコマンドは使用したコマンドです。#+tblfm: @1$4='(sbe add1 (x $3))

テーブルの外でコードブロックを使用する場合は、#+CALL:代わりに使用する必要があります(コードブロックの評価を参照)。

例えば:

#+CALL: add1(x=2)

#+RESULTS: add1(x=2)
: 3

#+CALL: add1(4)

#+RESULTS: add1(4)
: 5

#+call: add1(add1(2))

#+RESULTS: add1(add1(2)
: 4

編集(コメントからの回答の追加):

数式をクリーンアップし、数式を読み通して変更を加えたい場合は、数式エディタC-c 'を使用すると、数式をより明確に表示したり、セル参照を強調表示して、適切な領域を選択していることを確認できます。

于 2012-03-07T14:30:38.570 に答える