项目原始demo,不改动
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
Den här utvecklingskatalogen är arkiverad. Du kan se filer och klona katalogen, men inte öppna ärenden eller genomföra push- eller pull-förfrågningar.
 
 
 
 

33 rader
697 B

  1. var ensureTwoPower = function(n) {
  2. if (n && !(n & (n - 1))) return n;
  3. var p = 1;
  4. while (p < n) p <<= 1;
  5. return p;
  6. };
  7. var Cyclist = function(size) {
  8. if (!(this instanceof Cyclist)) return new Cyclist(size);
  9. size = ensureTwoPower(size);
  10. this.mask = size-1;
  11. this.size = size;
  12. this.values = new Array(size);
  13. };
  14. Cyclist.prototype.put = function(index, val) {
  15. var pos = index & this.mask;
  16. this.values[pos] = val;
  17. return pos;
  18. };
  19. Cyclist.prototype.get = function(index) {
  20. return this.values[index & this.mask];
  21. };
  22. Cyclist.prototype.del = function(index) {
  23. var pos = index & this.mask;
  24. var val = this.values[pos];
  25. this.values[pos] = undefined;
  26. return val;
  27. };
  28. module.exports = Cyclist;