我想做
(destructuring-bind (start end) (bounds-of-thing-at-point 'symbol))
但是bounds-of-thing-at-point
返回一个cons单元而不是列表,所以
destructuring-bind
不起作用。
什么可以适用于这种情况?
答案 0 :(得分:19)
由于destructuring-bind
是来自cl
包的宏,因此有必要查看Common Lisp文档以获取更多示例。
This page显示宏的语法。请注意(wholevar reqvars optvars . var)
。虽然我不确定cl
destructuring-bind
版本实际上支持所有不太常见的情况(许多关键字只有在与Common Lisp宏/函数一起使用时才有意义,但在Emacs中没有这个含义口齿不清)。
因此:
(destructuring-bind (start . end) (bounds-of-thing-at-point 'symbol) ;...)
应该有用。
答案 1 :(得分:5)
我用
(pcase-let ((`(,start . ,end) (bounds-of-thing-at-point 'symbol)))
...)
答案 2 :(得分:2)
我无法想象任何像destruct-bind一样优雅的东西,但这样可行:
(let* ((b (bounds-of-thing-at-point 'symbol))
(start (car b))
(end (cdr b)))
...)
答案 3 :(得分:0)
现在我们可以使用-let
in dash.el。就像<select [(ngModel)]="selected" [compareWith]="compareById">
<option *ngFor="let option of options" [ngValue]="option">
{{option.text}}
</option>
</select>
,只是更干净一点:
options = [
{id: 2, text: 'upper'},
{id: 3, text: 'Lower'}
];
selected: {id: number, text: string} | undefined;
compareById = <T extends {id: number}>(x: T, y: T) => x.id === y.id;