有没有办法做到这一点?我一直在使用Slime来学习Lisp,我想开始构建更大的项目,这意味着(我认为)我必须开始编写一些.lisp文件.
因此,假设我想创建一系列类,每个类都具有相同的成员函数.我们来调用这个函数吧
void doYourJob();
Run Code Online (Sandbox Code Playgroud)
我想最终把所有这些类放到同一个容器中,这样我就可以遍历它们并让每个类都执行'doYourJob()'
显而易见的解决方案是使用该函数创建一个抽象类
virtual void doYourJob();
Run Code Online (Sandbox Code Playgroud)
但我这样做犹豫不决.这是一个耗时的计划,虚拟功能可以大大提高它.此外,这个函数是类中唯一相互共同的函数,并且doYourJob对每个类的完全不同.
有没有办法避免使用具有虚函数的抽象类,或者我将不得不吮吸它?
我现在正在学习c ++,我想开始与显卡连接并使用3D图形的基础知识.我没有在我的书或互联网查询中找到它,我实际上完全不知道从哪里开始.编译后,c ++代码可以在显卡上运行吗?据我所知,我通过OpenGL的访问GPU处理,但我不清楚这是否仅仅是一个库用于到c ++访问(也可能是其他语言)来传递功能的GPU,或者如果它是特定于GLSL.那么什么是OpenGL,我如何将它与c ++结合使用才能将处理传递给GPU?是否有其他更直接或灵活的方式来使用C++和图形卡?
我尽可能地按照说明在Mac OS X上安装终端SLIME,但是当我按Mx时它没有提示我.
我使用以下两个sudo命令安装了emacs和Lisp:
sudo port install emacs +carbon
sudo port install sbcl slime
Run Code Online (Sandbox Code Playgroud)
我收到了以下说明:
(add-to-list 'load-path "/opt/local/share/emacs/site-lisp/slime")
(require 'slime-autoloads)
(setq slime-lisp-implementations
`((sbcl ("/opt/local/bin/sbcl"))
(abcl ("/opt/local/bin/abcl"))
(clisp ("/opt/local/bin/clisp"))))
(add-hook 'lisp-mode-hook
(lambda ()
(cond ((not (featurep 'slime))
(require 'slime)
(normal-mode)))))
(eval-after-load "slime"
'(slime-setup '(slime-fancy slime-banner)))
Run Code Online (Sandbox Code Playgroud)
使用您希望使用的Common Lisp exectuable的正确路径填充SLIME-LISP-IMPLEMENTATIONS中的初始化列表.
我不确定最后一点是什么意思......
无论如何,我以前从未使用过Lisp或emacs,大多数字面上的n00b定向指令都是最好的.只需用emacs编写和执行常见的lisp即可.谢谢!
我正在用 pygame 制作一个绘图程序,我想在其中为用户提供一个选项,即保存程序的确切状态,然后在稍后重新加载它。在这一点上,我保存了我的 globals dict 的副本,然后迭代,酸洗每个对象。pygame 中有一些对象不能被pickle,但可以转换为字符串并通过这种方式进行pickle。我的代码已设置为执行此操作,但是通过引用访问了其中一些不可选择的对象。换句话说,它们不在全局字典中,但它们被全局字典中的对象引用。我想在这个递归中对它们进行腌制,但我不知道如何告诉 pickle 返回它遇到问题的对象,更改它,然后再次尝试对其进行腌制。我的代码真的很杂乱,如果有一种不同的、更好的方式来做我的事情
surfaceStringHeader = 'PYGAME.SURFACE_CONVERTED:'
imageToStringFormat = 'RGBA'
def save_project(filename=None):
assert filename != None, "Please specify path of project file"
pickler = pickle.Pickler(file(filename,'w'))
for key, value in globals().copy().iteritems():
#There's a bit of a kludge statement here since I don't know how to
#access module type object directly
if type(value) not in [type(sys),type(None)] and \
key not in ['__name__','value','key'] and \
(key,value) not in pygame.__dict__.iteritems() and \
(key,value) not in sys.__dict__.iteritems() and \
(key,value) …Run Code Online (Sandbox Code Playgroud) 我一直在用'加速C++'教自己cpp,最近我注意到当我忘记了我的#include <algorithm>语句时,我的代码(包括transform和find_if)编译并成功运行.在此之后,我尝试完全删除所有标准的header include语句,并发现我的代码仍然运行.
我假设我无法理解预处理器命令将在我完成本书时解决,但是现在我只需要知道如何确保当我不正确地使用标题时我的终端对我大喊大叫所以我可以知道事情是什么位于std图书馆.
我正在运行OS 10.6.5所以我必须使用以下unix exe文件编译我的代码:
CC = g++
CFLAGS = -Wall
PROG = TrainingProject23
SRCS = TrainingProject23.cpp
ifeq ($(shell uname),Darwin)
LIBS = -framework OpenGL -framework GLUT
else
LIBS = -lglut
endif
all: $(PROG)
$(PROG): $(SRCS)
$(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)
clean:
rm -f $(PROG)
Run Code Online (Sandbox Code Playgroud)
它包含了OpenGL的构建协议,因为我也在学习它,并且很容易使用这个文件来编译我所有的C++项目.除了如何更改src文件和程序名称之外,我真的不了解Makefile,我只是把它从互联网上删除了.
通过加速c ++阅读,他们给出了一个我不明白的例子.这是一个带条件的循环(cin >> x).在脚本的这一点上,x已被声明为double.我知道只要x成功接收输入,循环就会执行,但是>>返回一个布尔值?我想我只是需要一点帮助才能理解它是什么>>和<<做....同时我们谈论的主题是什么,iostream,ios和iomanip之间的区别是什么
我刚刚开始使用LISP,因为刚刚打开这本书,我只有两页.我试图了解什么是什么,什么是不可接受的fn调用.每次我尝试执行
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
我得到一个非法的fn调用错误同样的
(cdr (1 2 3 4))
(first (1 2 3 4))
(a b c d)
Run Code Online (Sandbox Code Playgroud)
CL程序无法返回列表吗?我将如何使用这些功能或打印列表?如果重要的话,我正在使用SLIME实现.LISP与我以前合作的任何东西都非常不同,我想确保我从概念上得到它.