首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elisp中的访问函数

elisp中的访问函数
EN

Code Review用户
提问于 2014-02-19 00:35:42
回答 1查看 159关注 0票数 5

我正在为visual解决方案编写一些简单的emacs工具。

我有一个函数sln-process-csproj-file。这个函数选择一个项目的路径,并返回一个元组,它只是项目内部的一个数据模型。

现在,该函数最后一行的返回值是`(,project-name ,project-path ,project-files)

我编写了三个getter函数用于列表:

代码语言:javascript
复制
(defun sln-project-name (project)
  (nth 0 project))

(defun sln-project-path (project)
  (nth 1 project))

(defun sln-project-files (project)
  (nth 2 project))

这个getter和setter样板代码匹配最佳实践吗?有更短的方法来写吗?

EN

回答 1

Code Review用户

回答已采纳

发布于 2014-02-19 01:05:11

是的,用defstruct可以缩短它。文档中的一个示例:

代码语言:javascript
复制
      (cl-defstruct person name age sex)
      (setq dave (make-person :name "Dave" :sex 'male))
           ⇒ [cl-struct-person "Dave" nil male]
      (setq other (copy-person dave))
           ⇒ [cl-struct-person "Dave" nil male]
      (eq dave other)
           ⇒ nil
      (eq (person-name dave) (person-name other))
           ⇒ t
      (person-p dave)
           ⇒ t
      (person-p [1 2 3 4])
           ⇒ nil
      (person-p "Bogus")
           ⇒ nil
      (person-p '[cl-struct-person counterfeit person object])
           ⇒ t

或者,如果你想要更重的东西,就有一个CLOS类对象系统

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

https://codereview.stackexchange.com/questions/42086

复制
相关文章

相似问题

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