我有以下C文件:
//thing.c
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdio.h>
lua_State* L;
int main(){
L = lua_open();
lua_dostring(L, "print(\"lua\")");
printf("hello\n");
return 0; }
Run Code Online (Sandbox Code Playgroud)
和以下makefile:
default:
gcc -I/usr/include/lua50 -L/usr/lib -o qwerty thing.c -llua50 -llualib50
Run Code Online (Sandbox Code Playgroud)
代码构建得很好,但是当我运行它时,我得到以下内容:
[string "print("lua")"]:1: attempt to call global `print' (a nil value)
hello
Run Code Online (Sandbox Code Playgroud)
注意:我已经看到了关于这个错误的许多其他问题,但它们都涉及直接在Lua中工作,而不是与C api相关.它们似乎也暗示问题在于print函数从未定义过.我不明白这一点,因为我可以直接从命令行运行lua解释器和lua脚本.
编辑:我正在使用lua 5.0
我正在使用chai-as- promise来测试一些承诺.我的问题是我不确定如何在一次测试中使用多个期望语句.为了expect().to.be.fulfilled使其正常工作,我需要将其返回,如下所示:
it('test', () => {
return expect(promise).to.be.fulfilled
}
Run Code Online (Sandbox Code Playgroud)
......或者notify像这样使用:
it('test', (done) => {
expect(promise).to.be.fulfilled.notify(done)
}
Run Code Online (Sandbox Code Playgroud)
问题来自于我需要检查的另一件事,例如调用某个函数,如下所示:
it('test', (done) => {
var promise = doSomething()
expect(sinon_function_spy.callCount).to.equal(1)
expect(promise).to.be.fulfilled.notify(done)
})
Run Code Online (Sandbox Code Playgroud)
这里的问题是,因为doSomething()是异步的,所以sinon_function_spy当我调用它时,调用可能还没有发生expect,使得这个测试变得不稳定.如果我使用a then,像这样:
it('test', (done) => {
var promise = doSomething()
promise.then(() => {
expect(sinon_function_spy.callCount).to.equal(1)
})
expect(promise).to.be.fulfilled.notify(done)
})
Run Code Online (Sandbox Code Playgroud)
然后测试在技术上传递并按预期失败,但它将失败,因为由于then调用中抛出的异常,promise被拒绝.同样,如果我有一个承诺预计拒绝的情况:
it('test', (done) => {
var promise = doSomething()
promise.then(() => {
expect(sinon_function_spy.callCount).to.equal(1)
})
expect(promise).to.be.rejected.notify(done)
})
Run Code Online (Sandbox Code Playgroud)
然后检查sinon_function_spy永远不会被调用,因为承诺被拒绝并且没有调用 …
我正在尝试使用Iup和OpenCV运行基本应用程序。该应用程序的主要目标是显示图像并允许用户以各种有趣的方式进行分析,但这现在无关紧要。我需要知道以下错误消息的含义以及如何修复它们。我的应用程序仍然能够正常运行,并显示图像进行分析,但每次我重新绘制窗口时,这些错误似乎都会重新打印:
(frame:1840): GdkPixbuf-WARNING **: Bug! gdk-pixbuf loader 'png' didn't set an error on failure.
** (frame:1840): WARNING **: Pixbuf theme: Cannot load pixmap file /usr/share/themes/Mint-X/gtk-2.0/Scrollbars/scrollbar-v-trough.png: Failed to load image '/usr/share/themes/Mint-X/gtk-2.0/Scrollbars/scrollbar-v-trough.png': reason not known, probably a corrupt image file
(frame:1840): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion `GDK_IS_PIXBUF (pixbuf)' failed
(frame:1840): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion `GDK_IS_PIXBUF (pixbuf)' failed
** (frame:1840): WARNING **: Invalid borders specified for theme pixmap:
/usr/share/themes/Mint-X/gtk-2.0/Scrollbars/scrollbar-v-trough.png,
borders don't fit within the image
(frame:1840): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_n_channels: assertion `GDK_IS_PIXBUF …Run Code Online (Sandbox Code Playgroud) 我有运行嵌入式Lua的ac程序.截至目前,它只是一个问候世界.然而,在继续之前,我希望能够将lua输出发送到除了之外的其他地方stdout,以便我可以以某种方式操纵它.这是我的代码:
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main() {
lua_State *luaVM = luaL_newstate();
//char result[1024];
if (luaVM == NULL) {
printf("Error initializing lua!\n");
return -1;
}
luaL_openlibs(luaVM);
luaL_dostring(luaVM, "print(\"hello world!\")");
//Somehow put the output into result
//printf("%s\n%s\n", result, result);
lua_close(luaVM);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
例如,我想result在评论中看到两次打印lua代码的结果.可以这样做吗?
这就是我需要做的.我在C++中有一个字符串.对于字符串中的每一行,我需要在行的开头附加几个字符(如">>").我正在努力解决的问题是将字符串拆分为换行符,迭代追加字符的元素,然后将字符串重新加入的好方法.我已经看过一些想法,比如strtok(),但是我希望c ++字符串会有更优雅的东西.
到目前为止,我只是试图在python文档中给出这个示例,以便在C中嵌入python模块.我的问题是我无法弄清楚放置python脚本的位置.我的最终目标是__init__.py通过执行可以在C中加载完整的python包(具有各种模块的文件夹)PyImport_Import(...).但是现在,请让我知道在哪里放置显示的脚本(文件名,路径等),以便运行给出的C程序.
编辑
我应该指出我尝试过的东西.我已经尝试将multiply.py文件放在本地目录中,并将其放在文件中调用的子目录multiply中__init__.py.在所有这些情况下,我得到了ImportError: No module named multiply
我的 Laravel 应用程序中有一个名为Event. 正如我刚刚发现的那样,这会在我的模型和Illuminate\Support\Facades\Event内置外观之间产生冲突。这里显而易见的解决方案是更改我的模型的名称,这并不理想,因为我真的没有其他名称可以给我的模型有意义,或者将别名重命名app.php为 for Illuminate\Support\Facades\Event,我想避免这种情况因为害怕破坏将来可能依赖该别名的任何东西(恐怕我可能会忘记)。
有人建议也许我可以使用命名空间,我尝试如下:
应用程序/模型/Event.php
namespace Models; #<-- I've also tried using "\Models" here
class Event extends \Eloquent{
Run Code Online (Sandbox Code Playgroud)
应用程序/数据库/种子/DatabaseSeeder.php
Models\Event::create(); #<-- again, I've also used "\Models\Event"
Run Code Online (Sandbox Code Playgroud)
所有4个以上的组合已经产生了Class 'Models\Event' not found,当我运行错误php artisan db:seed。
也许我只是没有正确理解命名空间,但更紧迫的问题是如何解决我的问题。如果它可以按照建议使用命名空间来解决,那就太好了,但我也愿意接受任何其他想法。
Java 8添加了lambda表达式.以类似于匿名类的方式使用lambdas非常简单,但我想知道是否存在使用命名函数作为其他函数的参数的相关功能.例如,是否有Java方法来编写以下Python代码:
list1 = (1,2,3)
list2 = (4,5,6)
def add(a, b):
return a+b
for e in map(add, list1, list2):
print(e)
Run Code Online (Sandbox Code Playgroud)
产量
5
7
9
Run Code Online (Sandbox Code Playgroud) 我在python中有一个以下形式的字符串:
line a
line b
line ba
line bb
line bba
line bc
line c
line ca
line caa
line d
Run Code Online (Sandbox Code Playgroud)
你可以得到这个想法.它实际上采用与python代码本身非常相似的形式,因为有一条线,并且在该行下方,缩进指示块的一部分,由最近的较小缩进线引导.
我需要做的是将此代码解析为树结构,以便每个根级别行是字典的键,其值是表示所有子行的字典.所以上面会是:
{
'line a' => {},
'line b' => {
'line ba' => {},
'line bb' => {
'line bba' => {}
},
'line bc' => {}
},
'line c' => {
'line ca' => {
'line caa' => {}
},
},
'line d' => {}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
def parse_message_to_tree(message):
buf = StringIO(message)
return parse_message_to_tree_helper(buf, 0)
def parse_message_to_tree_helper(buf, …Run Code Online (Sandbox Code Playgroud)