lodash源码之判断一个值是否为有效的类数组的长度

1.一开始我的理解

  • 必须是大于等于0的整数。

2.源码

 function isLength(value) {
    return typeof value === 'number' &&
      value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;
  }
  • 从lodash源码中,可以看出该值还必须满足小于等于最大安全整数(MAX_SAFE_INTEGER)。
  • MDN:Number.MAX_SAFE_INTEGER值为Math.pow(2,53) - 1。所谓的安全,就是大于这个数的整数不一定可以精确表示
  • value > -1,刚开始,我认为这里的判断是可以去掉的。因为,我认为满足value % 1 === 0的value一定是大于等于0 的数。然而,并不是这样的。因为-0 === 0也是正确的。因此,必须加上value > -1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于数组的8个状态的状态机的C++源代码: ```c++ #include <iostream> using namespace std; enum State { STATE_1, STATE_2, STATE_3, STATE_4, STATE_5, STATE_6, STATE_7, STATE_8 }; const int NUM_STATES = 8; // State transition table State stateTable[NUM_STATES][NUM_STATES] = { { STATE_2, STATE_4, STATE_1, STATE_6, STATE_5, STATE_3, STATE_7, STATE_8 }, { STATE_6, STATE_1, STATE_2, STATE_8, STATE_3, STATE_5, STATE_4, STATE_7 }, { STATE_4, STATE_3, STATE_2, STATE_1, STATE_7, STATE_8, STATE_6, STATE_5 }, { STATE_5, STATE_6, STATE_7, STATE_8, STATE_1, STATE_2, STATE_3, STATE_4 }, { STATE_7, STATE_2, STATE_3, STATE_4, STATE_5, STATE_1, STATE_8, STATE_6 }, { STATE_3, STATE_5, STATE_4, STATE_2, STATE_8, STATE_6, STATE_1, STATE_7 }, { STATE_8, STATE_7, STATE_6, STATE_5, STATE_4, STATE_3, STATE_2, STATE_1 }, { STATE_1, STATE_8, STATE_5, STATE_7, STATE_6, STATE_4, STATE_3, STATE_2 } }; int main() { State currentState = STATE_1; while (true) { cout << "In state " << currentState + 1 << endl; // Get next state from state table currentState = stateTable[currentState][rand() % NUM_STATES]; } return 0; } ``` 在这个状态机中,我们使用了一个二维数组`stateTable`来存储状态之间的转移关系。该数组的行和列索引都是从0开始,因此我们需要在输出当前状态时将状态加1。在`while`循环中,我们使用`rand()`函数来生成一个随机数,以从当前状态的转移表中选择下一个状态。需要注意的是,这个状态机是无限循环的,因此需要手动停止程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值