我有这段Javascript代码,在Internet Explorer的每次调用中大约需要600毫秒.其他浏览器所用的时间可以忽略不计.
var _nvs_currentTab;
var _nvs_zoomfield;
var _nvs_centerfield;
var _nvs_globsearch;
var _nvs_category;
var _nvs_favsonly;
var _nvs_wishonly;
var _nvs_friendfavsonly;
var _nvs_newitemsonly;
var _nvs_globsearchOld;
var _nvs_catOld;
var _nvs_favsonlyOld;
var _nvs_wishonlyOld;
var _nvs_friendFavsonlyOld;
var _nvs_newItemsOnlyOld;
function saveState()
{
if (!_nvs_currentTab)
{
var f = document.getElementById;
_nvs_currentTab = f('currentTab');
_nvs_zoomfield = f('zoomfield');
_nvs_centerfield = f('centerfield');
_nvs_globsearch = f("globsearch");
_nvs_category = f("category");
_nvs_favsonly = f("favsonly");
_nvs_wishonly = f("wishonly");
_nvs_friendfavsonly = f("friendfavsonly");
_nvs_newitemsonly = f("newitemsonly");
_nvs_globsearchOld = f("globsearchOld");
_nvs_catOld = f("categoryOld");
_nvs_favsonlyOld = f("favsonlyOld");
_nvs_wishonlyOld = …Run Code Online (Sandbox Code Playgroud) 鉴于模式^[a-zA-Z0-9 .\-_]+$和字符串te\\st,为什么匹配正面?我正在使用它来验证用户名,我不希望人们在他们的用户名中加入斜杠,它与URL混淆.
我正在调用ereg($pattern, $username),运行PHP版本5.2.8.
通常在我的更多面向.NET的同事添加的代码中,我会碰到这样的事情:
function someFunction()
{
$localVariable = otherFunction();
$ret = $localVariable * 2; // or whatever
$localVariable = null;
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
设置$localVariable为null 有什么好处吗?因为它是一个局部变量(因此无论如何都会超出范围),我会假设没有,但如果我错了,请纠正我.
我正在为游戏开发原型,并且某些游戏规则将在ini文件中定义,以便游戏设计师可以在不需要重新编译的帮助的情况下调整游戏参数.这就是我目前正在做的事情:
std::ifstream stream;
stream.open("rules.ini");
if (!stream.is_open())
{
throw new std::exception("Rule file could not be opened");
}
// read file contents here
stream.close();
Run Code Online (Sandbox Code Playgroud)
但是,我的流不会成功打开.在调试期间深入了解STL源会发现_getstream()(在stream.c中定义)继续返回NULL,但我无法弄清楚为什么会这样.帮忙,有人吗?
编辑:Rules.ini与.exe文件位于同一目录中.
我正在开发一款游戏,而我正在研究处理输入的部分.这里涉及三个类,有一个ProjectInstance类启动级别和东西,有一个GameController将处理输入,一个PlayerEntity将受到由控制的控件的影响GameController.在启动级别时,ProjectInstance创建了GameController,它将EvaluateControls在Step方法中调用其方法,该方法在游戏循环中调用.该EvaluateControls方法看起来有点像这样:
void CGameController::EvaluateControls(CInputBindings *pib) {
// if no player yet
if (gc_ppePlayer == NULL) {
// create it
Handle<CPlayerEntityProperties> hep = memNew(CPlayerEntityProperties);
gc_ppePlayer = (CPlayerEntity *)hep->SpawnEntity();
memDelete((CPlayerEntityProperties *)hep);
ASSERT(gc_ppePlayer != NULL);
return;
}
// handles controls here
}
Run Code Online (Sandbox Code Playgroud)
正确调用此函数,并且assert永远不会触发.但是,每次调用此函数时,gc_ppePlayer都将设置为NULL.正如您所看到的,它不是超出范围的局部变量.唯一gc_ppePlayer可以设置为NULL的地方是在构造函数中,或者可能在析构函数中,在调用之间都没有调用它们EvaluateControls.调试时,gc_ppePlayer在返回前收到正确的预期值.当我再次按F10并且光标位于右括号时,值将更改为0xffffffff.我在这里不知所措,怎么会发生这种情况?任何人?