首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org-babel sbe语法

org-babel sbe语法
EN

Stack Overflow用户
提问于 2012-03-07 03:13:56
回答 1查看 1K关注 0票数 2

有人能给出在sbe中使用ob-table.el函数的例子吗?我一定是错过了什么,因为我还没能让它和直截了当的精灵一起工作。

代码语言:javascript
复制
#+name: add1(x=1) :results silent
#+begin_src python
return x + 1
#+end_src

这样做是可行的:

代码语言:javascript
复制
| 1 | 2 | 3 | 4 |
#+TBLFM: @1$4='(sbe add1 (x $3))

但这并不意味着:

代码语言:javascript
复制
#+begin_src emacs-lisp
(sbe add1 (x 2))
#+end_src

错误:错误类型参数:序列,2

将2改为清单只会使其进一步恶化:

代码语言:javascript
复制
#+begin_src emacs-lisp
(sbe add1 (x (list 2))
#+end_src

错误类型参数:缓冲区或字符串-p,2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-07 14:30:38

如果我正确地理解了您的问题,您将尝试使用表外的命名源块来调用结果。

首先,您的:results silent属于#+begin_src行,而不是#+name (只有当您直接评估该块时才与之相关)。我从python切换到emacs,原因很简单,因为这台机器上没有python,所以不能对块进行计算,否则,函数仍然是等效的。

代码语言:javascript
复制
#+name: add1(x=1)
#+begin_src emacs-lisp :results silent
  (+ x 1)
#+end_src

在Org表中,正确的命令是您使用的命令:#+tblfm: @1$4='(sbe add1 (x $3))

当使用表外的代码块时,必须使用#+CALL: (参见代码块评估)。

例如:

代码语言:javascript
复制
#+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 '将让您更清楚地看到它们,并突出显示单元格引用,以确保您选择正确的区域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9595310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档