typestar

Globales en WebAssembly

Estado a nivel de módulo; solo los (mut ...) aceptan escrituras.

(module
  ;; Globals live outside any function; only (mut ...) ones may be
  ;; written after instantiation.
  (global $visits (mut i32) (i32.const 0))
  (global $capacity i32 (i32.const 18))

  (func (export "check_in") (result i32)
    (global.set $visits
      (i32.add (global.get $visits) (i32.const 1)))
    (global.get $visits))

  (func (export "beds_left") (result i32)
    (i32.sub (global.get $capacity) (global.get $visits))))

Cómo funciona

  1. (global $visits (mut i32) ...) se escribe; $capacity no.
  2. global.set tras un global.get y un add hace el incremento.
  3. Los globales inmutables son constantes con nombre que el motor pliega.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
408
Tokens
82
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 76 segundos.

Escribe este fragmento

Paso 1 de 3 en Globales y arranque; paso 20 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →