我正在为一个简单的,类似Lisp的编程语言编写一个解释器.它将代码处理成节点,所有节点都有类型,其中一些可能具有索引顺序的子节点.由于信息性质的不同,我不能对所有节点值使用相同长度的类型.它们的类型名称是枚举类型,但我对值类型的唯一想法是void *.但是当我使用它时,我认为我必须非常小心.我的意思是,我不能使用任何默认的析构函数,我必须编写一个关心节点类型的析构函数.此外,我甚至需要使用大量的强制转换来访问值.
这就是我所说的:
enum NodeType {/* Some node types */}
class Node
{
public:
Node(string input_code);
private:
NodeType type; // Having this I can know the type of value
void* value;
};
Run Code Online (Sandbox Code Playgroud)
有没有更安全的方法,制作更好的代码,但仍然像使用void指针一样高效?
我正在用Python编写一个用于Ubuntu的小应用程序指示器.我需要更改不敏感(禁用)gtk.MenuItem的文本.我知道这个功能的活生生的例子,这是内置蓝牙指示器中最顶级的项目.
认为这是我第一次遇到vimscript,我检查了插件代码.它有以下几行代码:
fu! ctrlp#init(type, ...)
if exists('s:init') || s:iscmdwin() | retu | en
let [s:ermsg, v:errmsg] = [v:errmsg, '']
let [s:matches, s:init] = [1, 1]
cal s:Reset(a:0 ? a:1 : {})
noa cal s:Open()
cal s:SetWD(a:0 ? a:1 : {})
gal s:MapNorms()
cal s:MapSpecs()
cal ctrlp#syntax()
cal ctrlp#setlines(s:settype(a:type))
cal s:SetDefTxt()
cal s:BuildPrompt(1)
if s:keyloop | cal s:KeyLoop() | en
endf
Run Code Online (Sandbox Code Playgroud)
如果我colorscheme atom在函数中放置或类似的东西,它会改变整个缓冲区的颜色方案,而不是只改变弹出窗口的颜色方案.有没有办法配置CtrlP使用单独的配色方案?当然,我并不打算将配置放到插件代码中,因此我也在寻找一种解决方案,使我可以将设置放入我的设置中.vimrc,例如使用autocmd.
c++ ×1
color-scheme ×1
gtk ×1
indicator ×1
interpreter ×1
pointers ×1
pygtk ×1
python ×1
ubuntu ×1
vim ×1