gpt4 book ai didi

javascript - Screeps 内置函数不返回预期类型

转载 作者:行者123 更新时间:2023-11-27 22:47:48 24 4
gpt4 key购买 nike

游戏中Screeps ,我对某些内置函数的返回类型有一些问题。采取以下代码:

var creeps1 = Game.creeps
var room = Game.rooms[myRoomName];
var creeps2 = room.find(FIND_CREEPS);

console.log(creeps1.constructor.name);
console.log(creeps1 instanceof Array);

console.log(creeps2.constructor.name);
console.log(creeps2 instanceof Array);

console.log([].constructor.name);
console.log([] instanceof Array);

您希望它们都是数组,因此都是 Array 的实例。然而在世界游戏中,我得到以下结果(将 myRoomName 设置为我有权访问的房间的名称):

// Results in world
[1:11:11 AM] Object
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] true

但是等等,事情变得更奇怪了。当我在模拟中运行相同的代码时(这次 myRoomName'sim'),我得到以下结果:

// Results in simulation
[1:11:11 AM] Object
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] true
[1:11:11 AM] Array
[1:11:11 AM] true

为什么所有这些函数都没有返回Array的实例?世界环境中怎么会有不同版本的Array?有没有办法将结果转换为Array实例?

最佳答案

Game.creeps 不返回数组,它返回一个表现为散列的对象,其中 Creep 名称是键,Creep 是值。这记录在 API for Game.creeps 中。如果您需要将其放入数组中,则可以迭代该对象并将条目附加到数组中。

至于为什么 creeps2 instanceof 在模拟中与实际游戏中不同,很难说。但是,Array.isArray(creeps2) 似乎在两个环境之间表现一致(在两个实例中都返回 true)。

关于javascript - Screeps 内置函数不返回预期类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com