小编Bri*_*man的帖子

array.splice从剩余元素中删除值

我遇到了array.splice的这种奇怪的副作用,并将代码提炼到了重新创建所需的最小值.是的,其中大部分可以在array.filter的一行上完成,但我对是否犯了错误或是否还有其他事情感兴趣.

var array = [];

for (var i = 0; i < 10; i++) {
  array.push({
    value: i
  });
}

array.forEach(function(item, index, intArray) {
  if (item.value % 2 == 1) {
    item.odd = true;
  } else {
    item.odd = false;
  }

  if (item.odd) {
    console.log("Removing " + item.value);
    intArray.splice(index, 1);
  }

});

console.log(array);
Run Code Online (Sandbox Code Playgroud)

运行在奇数元素此JavaScript结果如预期被去除,但它也除去item.odd值6项2,4和8卸下intArray.splice线带回奇数阵列元件,但也带来了返回所有元素的item.odd值.

我在FF和Chrome中测试了这个.即使只将项传递给回调,该行为仍然存在,索引通过array.indexOf计算,并从循环外部引用该数组.

javascript arrays

12
推荐指数
1
解决办法
692
查看次数

无法从工作单元测试用例构建最简单的套件

我已经开始对我的PHP程序使用单元测试,并认为Simpletest是一个很好的潜水地点.我将Simpletest文件添加到我的测试服务器,并在我的自定义PDO类上运行以下测试:

<?php
require_once('../simpletest/autorun.php');
require_once('../includes/inc_sql.php');

class TestOfSQL extends UnitTestCase{
    function testRead(){
        ...
    }

    function testWriteAndDelete(){
        ...
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

这一切都很糟糕.我尝试构建一个涉及(到目前为止)测试文件的测试套件,如下所示:

<?php
require_once('../simpletest/autorun.php');

class AllTests extends TestSuite {

    function __construct(){
        parent::__construct();
        $this->addFile('inc_sql_test.php');
    }
}
Run Code Online (Sandbox Code Playgroud)

这会崩溃并烧伤,我得到以下读数:

Warning: include_once(inc_sql_test.php) [function.include-once]: failed to open stream: No such file or directory in E:\xampp\htdocs\historicMuncie\simpletest\test_case.php on line 382

Warning: include_once() [function.include]: Failed opening 'inc_sql_test.php' for inclusion (include_path='.;E:\xampp\php\PEAR') in E:\xampp\htdocs\historicMuncie\simpletest\test_case.php on line 382

Warning: file_get_contents(inc_sql_test.php) [function.file-get-contents]: failed to open stream: No such file or directory in E:\xampp\htdocs\historicMuncie\simpletest\test_case.php on line …
Run Code Online (Sandbox Code Playgroud)

php tdd unit-testing simpletest

5
推荐指数
1
解决办法
969
查看次数

立即以复杂的转弯结束比赛

结束一个允许每回合一个动作的回合制游戏是相当简单的 - 你可以在满足各种赢或输条件时更新布尔值,并在每次循环转弯时检查布尔值,以确定何时游戏结束.

然而,我正在编写的游戏涉及更复杂的转弯,玩家每个角色采取多个动作,可能会导致胜利或失败的多个角色,以及在角色转弯之间发生的几次计算机运行更新,这可能导致丢失.显然,当达到胜利条件时,必须中断转弯.

我想到的选项:

  • 只需每个循环继续检查一次完成.这个选项并没有真正起作用 - 即使你已经赢了(甚至可能不可能),你也必须完成转弯的所有动作,并且你必须包括特殊的处理程序以确保一个完成条件不会被同一回合中的另一个覆盖.

  • 通过堆栈抛出异常,直到你回到main方法,然后捕获异常,解析它,并提供输/输消息.令人难以置信的是实施,而不是真正的例外.

  • 使用观察者/侦听器模型或事件处理程序将另一个方法调用抛到堆栈上,而不是从游戏循环中优雅地提取自己的程序.似乎更多的是插入一些快速代码或将消息发送到其他线程,而不是结束当前的游戏循环.

  • 将游戏循环放在自己的线程中,只要达到胜利条件就终止.主要方法是在一个单独的循环中等待游戏状态的变化,并根据需要进行处理.这种方法的问题在于(在Java中,无论如何)实现Runnable实际上不允许从其他地方停止正在运行的线程(你必须从run()方法返回),甚至扩展Thread(无论如何都不应该这样做)并且在满足条件时调用this.interrupt()实际上并不会阻止游戏代码继续运行.虽然你可以轮询线程的中断标志来驱动逻辑,但这只会给我们带来同样的问题而不是真正起作用的中断.

一些代码:

public static void main(String[] args) {        
    Game game = new Game(2, Difficulty.NOVICE);
    game.run();

    while(game.getGameState() == State.INCOMPLETE){
        //Hold while waiting for game to complete.
    }
}

public class Game extends Thread{

    public void checkState(){
    //Let's presume a win condition was thrown:
        state = State.WON;
        this.interrupt();
    }

    public void randomMethod(){
        //This method might contain some code that triggers a win condition, so we immediately …
Run Code Online (Sandbox Code Playgroud)

java multithreading interrupt

5
推荐指数
1
解决办法
164
查看次数

如何在PHP中停止浪费时间

作为程序员,我喜欢开发算法.我喜欢解决问题并找出一个干净,高效,可读,优雅的解决方案.然而,我似乎发现,我的大部分时间都用于验证和清理表单数据,并将其传递以准备各种SQL语句.也许这就是"它的方式",但我怀疑我可能做错了.

您如何避免无休止地验证输入和构建数据库交互的死亡陷阱?你使用第三方图书馆吗?写自己的图书馆?或者这就是它的方式?

php webforms

2
推荐指数
1
解决办法
174
查看次数

这个PHP身份验证功能如何破解?

这是我写的一个递归函数,用于确定给定用户是否有权查看页面上的内容.它基本上以下列方式调用:

if(authorize($_SESSION['user']['user_id'], $necessaryClearance)){
    //Output restricted content
} else{
    //Inform user they are not authorized
}
Run Code Online (Sandbox Code Playgroud)

每个用户都有清关级别和清关状态.这允许使用$ clearance作为用户必须匹配或击败的许可级别,用户必须匹配的许可状态或一组状态(用户可以匹配的任何一个)来调用授权功能.通常,$ user_id是从会话数据中提取的($ _SESSION ['user'] ['$ user_id'],每次页面加载时从数据库刷新),并且每页或每个显式设置清除 - 模块基础.

//This function checks if the user is authorized to view the page
//It returns 1 if access is granted and a 0 if access is denied
function authorize($id, $clearance){
 //$clearance == array
    if (is_array($clearance)){
   //if yes Iterate array through Authorize($id, $clearance[])
  foreach($clearance as $userStatus){
   $tally += authorize ($id, $userStatus);

  }
   return $tally;
 //if no check if …
Run Code Online (Sandbox Code Playgroud)

php security authorization

1
推荐指数
1
解决办法
592
查看次数

Xcode实时语法检查?

我是Xcode和Objective C的新手,但我正在通过IDE挖掘我的方式并注意到它似乎没有进行实时语法检查.如果我写错字,我必须在Xcode甚至提到存在问题之前构建项目.更糟糕的是 - 因为它正在返回编译器错误,所以通常甚至不突出显示正确的行(正确)!

是否有一个我缺少的设置,或者就是我在编译以检查语法错误时遇到的问题?

macos xcode objective-c

1
推荐指数
1
解决办法
2762
查看次数