Emacs Lisp Symbol类型组成部分
Emacs Lisp的Symbol经常被用作变量名。
在ELisp里面,其实Symbol有4个组成部分。
1. 打印名(Print name):也就是Symbol的名字。可以通过symbol-name函数来获的。(symbol-name 'abc)
的返回就是abc
2. 值(Value):也就是平时我们用的变量值。直接使用symbol的名字就可以访问。(princ abc)
就可以打印变量的值。
3. 函数(Function):这个比较有意思,一个Symbol既可以表示一个变量,也可以表示一个函数,这两者之间没有任何冲突。可以通过symbol-function来获得函数值。(abc)
可以直接调用这个函数。
4. 属性列表(Property list),可以存一个Property List到Symbol中,并且和值,和函数都不冲突。通过symbol-plist获得这个preperty list。get/put函数设置property值。(get 'abc 'property1)
下面时测试代码:
(setq abc 5) <- 设置Symbol值
(defun abc ()
(princ "helloworld!")) <- 定义Symbol函数
(put 'abc 'property1 56) <- 设置Symbol属性
(put 'abc 'property2 "hello")
(princ "symbol name:")
(princ (symbol-name 'abc))
(princ "\nsymbol value:")
(princ abc)
(princ "\nsymbol function:")
(princ (symbol-function 'abc))
(princ "\nrun abc function\n")
(abc)
(princ "\nsymbol property list:")
(princ (symbol-plist 'abc))
(princ "\nproperty1:")
(princ (get 'abc 'property1))
(princ "\nproperty2:")
(princ (get 'abc 'property2))
(princ "\n")
运行结果如下:
留言与评论(共有 0 条评论) |