javascript / expert
Snippet
Reaktive bitweise Zustandskodierung mit BigInt-Bitfeldern in benutzerdefinierten Svelte-Stores
Diese Technik nutzt BigInt-Bit-Operatoren beliebiger Präzision in benutzerdefinierten Svelte-Stores, um Hunderte von booleschen Anwendungs-Flags in einem einzigen kompakten primitiven Datentyp zu verwalten.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { writable } from 'svelte/store';export function createBitfieldStore(initialState = 0n) {const { subscribe, update, set } = writable(BigInt(initialState));return {subscribe,toggleFlag(bitIndex) {update(flags => flags ^ (1n << BigInt(bitIndex)));},hasFlag(flags, bitIndex) {return (flags & (1n << BigInt(bitIndex))) !== 0n;},reset() {set(0n);}};}
svelte
Erklärung
1
const { subscribe, update, set } = writable(BigInt(initialState));
Initialisiert einen Svelte Writable Store mit einem BigInt-Bitfeld beliebiger Präzision.
2
update(flags => flags ^ (1n << BigInt(bitIndex)));
Schaltet ein bestimmtes Bit-Flag mittels bitweisem XOR und BigInt-Links-Shift um.
3
return (flags & (1n << BigInt(bitIndex))) !== 0n;
Prüft das Vorhandensein eines Flags durch bitweisen UND-Vergleich gegen ein Null-BigInt.