草庐IT

lua-patterns

全部标签

c++ - 从 Lua 调用函数时如何处理 C++ 异常?

我有一个可以从Lua调用的C++函数。为了演示我的问题,这里举个例子:intPushHello(lua_State*L){stringstr("Hello");lua_pushlstring(L,str.data(),str.length());return1;}注意:我知道我不必在那里使用字符串变量,但它是用来演示问题的。这是我的两个问题:当我从Lua字符串构造函数调用这个函数时,可能会抛出异常。那是问题吗?Lua会处理它并正确展开Lua堆栈吗?我不这么认为。我该如何解决?我是否需要在所有此类代码周围添加try/catch并将异常转换为lua_error?没有更好的解决方案吗?另一个

c++ - Lua,游戏状态和游戏循环

在每次游戏循环迭代时调用main.lua脚本-这是好的还是坏的设计?它对性能有何影响(相对)?从a维护游戏状态。C++主机程序或b。来自Lua脚本或c。从两者同步?(关于该主题的上一个问题:LuaandC++:separationofduties)(我为每个答案投票。最佳答案将被接受。) 最佳答案 我对lua的基本规则是-或游戏中的任何脚本语言-每一帧发生的任何事情:c++异步事件-用户输入-lua同步游戏引擎事件-lua基本上,任何以>33-100Hz(取决于帧速率)调用的代码都是C++我尝试调用基于任何类型的实际指标?并不真地。

抽象工厂模式(Abstract Factory Pattern)

回顾工厂方法设计模式的不足:具体产品增加时,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度模式动机产品等级结构:产品等级结构即产品的继承结构,即抽象产品与具体产品产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品模式定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。模式结构模式优点隔离了具体类的生成,使得客户端并不需要知道什么被创建当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象增加新的产品族很方便,无须修改已有系统,符合开闭原则模式

design-patterns - 将公共(public)变量传递到 Node.js 中的单独模块的最佳方法是什么?

我使用单独的路由器文件作为主应用程序和身份验证应用程序的模块。我无法获得将变量(数据库客户端)传递到路由器的最佳方法。我不想硬编码或传递它:module.exports=function(app,db){也许使用单例寄存器或使用全局db变量是最好的方法?您对设计模式有何经验?哪种方式最好,为什么? 最佳答案 我发现使用依赖注入(inject)来传递东西是最好的风格。它确实看起来像你有的东西://App.jsmodule.exports=functionApp(){};//Database.jsmodule.exports=funct

docker - 如何在 Alpine linux 上为 nginx 添加 Lua 模块?

我想要一个启用Lua模块的nginx精简Docker镜像。如何基于Alpinelinux创建它? 最佳答案 这是一个Dockerfile:FROMalpine:3.6RUNapkadd--no-cachenginx-mod-http-lua#DeletedefaultconfigRUNrm-r/etc/nginx/conf.d&&rm/etc/nginx/nginx.conf#CreatefolderforPIDfileRUNmkdir-p/run/nginx#AddournginxconfCOPY./nginx.conf/etc/

python - 从 C++ 调用 Python 或 Lua 来计算表达式,仅在需要时计算未知变量

我有一个这样的表达式/公式std::stringexpr="((A>0)&&(B>5||C>10))";我做了一些研究,似乎如果A、B、C值已知,通过在C++程序中嵌入Lua或Python,有eval函数可以替代A、B和C并返回true或false。但是当我不知道所有值时会发生什么?假设A是已知的并且它是-1。如果A为-1,则无论B或C的值如何,公式都将评估为“假”。我可以在事先不知道所有变量的情况下评估公式吗?例如,如果A为10,则查找B的值并再次重新评估是有意义的。我们如何解决这些问题?想法? 最佳答案 我不知道有任何现有的可用

python的re : return True if string contains regex pattern

我有一个这样的正则表达式:regexp=u'ba[r|z|d]'如果单词包含bar、baz或bad,则函数必须返回True。简而言之,我需要Python的正则表达式模拟'any-string'in'text'我怎样才能意识到这一点?谢谢! 最佳答案 importreword='fubar'regexp=re.compile(r'ba[rzd]')ifregexp.search(word):print('matched') 关于python的re:returnTrueifstringcon

python - 类型错误 : can't use a string pattern on a bytes-like object in re. findall()

我正在尝试学习如何从页面中自动获取网址。在以下代码中,我试图获取网页的标题:importurllib.requestimportreurl="http://www.google.com"regex=r'(,+?)'pattern=re.compile(regex)withurllib.request.urlopen(url)asresponse:html=response.read()title=re.findall(pattern,html)print(title)我收到了这个意外错误:Traceback(mostrecentcalllast):File"path\to\file\C

java - URL解码器 : Illegal hex characters in escape (%) pattern - For input string: "</"

我在尝试从我的应用程序生成.PDF文件时遇到此异常。URLDecoder:Illegalhexcharactersinescape(%)pattern-Forinputstring:....这是堆栈跟踪java.lang.IllegalArgumentException:URLDecoder:Illegalhexcharactersinescape(%)pattern-Forinputstring:"这里是代码StringBufferoutBuffer=newStringBuffer();//somevaluesareaddedtooutBuffer.StringpdfXmlView=

java.lang.IllegalArgumentException : Illegal pattern character 'Y' for SimpleDateFormat

以下代码:Calendarnow=Calendar.getInstance();month=now.get(Calendar.MONTH)+1;year=now.get(Calendar.YEAR);System.out.println("Month"+month+"year"+year);SimpleDateFormatdt1=newSimpleDateFormat("MMMMYYYY");e.setMonthnYear(dt1.format(now.getTime()));在服务器上部署后显示以下异常:java.lang.IllegalArgumentException:Illeg