为什么在creep的教程中会执行Condition
Why is the Condition excectuted in the tutorial of screep
我在 Python 编程很多,刚开始玩 Screeps 和 Javascript。
在本教程中,此代码用于将 creep 移动到能源并收割它:
if(creep.store.getFreeCapacity() > 0) {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
}
而这个 creep 正是这样做的。然而,根据我的直觉,creep 不应该开始收割,因为它只是被告知要移动到那里。这是 Screeps 中对象定义方式的独特之处,还是我误解了 JavaScript。
我也试过在没有if语句的情况下将creep移动到source来检查它是否会自动收割,但没有做到。
收获代码也可以分开而不是放在一行中。也许这会让你明白。
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
这部分告诉 creep 去收割,然后才评估收割的结果。 documentation 表示方法 returns 一个可以检查的常量结果。
把这段代码稍微拆开一点,它看起来像这样:
let harvestResult = creep.harvest(sources[0]);
if (harvestResult == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
现在更清楚了,方法总是在之后调用和求值。
我在 Python 编程很多,刚开始玩 Screeps 和 Javascript。
在本教程中,此代码用于将 creep 移动到能源并收割它:
if(creep.store.getFreeCapacity() > 0) {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
}
而这个 creep 正是这样做的。然而,根据我的直觉,creep 不应该开始收割,因为它只是被告知要移动到那里。这是 Screeps 中对象定义方式的独特之处,还是我误解了 JavaScript。
我也试过在没有if语句的情况下将creep移动到source来检查它是否会自动收割,但没有做到。
收获代码也可以分开而不是放在一行中。也许这会让你明白。
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
这部分告诉 creep 去收割,然后才评估收割的结果。 documentation 表示方法 returns 一个可以检查的常量结果。
把这段代码稍微拆开一点,它看起来像这样:
let harvestResult = creep.harvest(sources[0]);
if (harvestResult == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0]);
}
现在更清楚了,方法总是在之后调用和求值。