1.21 Structure

Les structures KC3 sont des structures associatives clé-valeur avec des valeurs par défaut et un ordre arbitraire des propriétés.

Elles sont compatibles avec les structures C du même type.

ikc3> a = %KC3.Op{sym: :dot,
                  precedence: 10,
                  callable: fn (a, b) { a.x * b.y + a.y * b.y }}
%KC3.Op{sym: :dot,
        arity: 2,
        special: false,
        precedence: 10,
        associativity: 1,
        callable: fn (a, b) { a.x * b.y + a.y * b.y }}

Vous pouvez définir un type de structure par module avec defstruct, par exemple dans vec2d.kc3 :

defmodule Vec2D do

  defstruct [x: 0.0,
             y: 0.0]

end

La déstructuration fonctionne avec les structures pour extraire les valeurs :

ikc3> %KC3.Op{sym: sym} = ^ a
%KC3.Op{sym: :dot,
        arity: 2,
        special: false,
        precedence: 10,
        associativity: 1,
        callable: fn (a, b) { a.x * b.y + a.y * b.y }}
ikc3> sym
:dot

Vous pouvez utiliser la syntaxe pointée pour accéder aux champs depuis une clé Sym :

ikc3> a = %KC3.Op{sym: :dot,
                  precedence: 10,
                  callable: fn (a, b) { a.x * b.y + a.y * b.y }}
%KC3.Op{sym: :dot,
        arity: 2,
        special: false,
        precedence: 10,
        associativity: 1,
        callable: fn (a, b) { a.x * b.y + a.y * b.y }}
ikc3> a.sym
:dot
ikc3> a.arity
2
ikc3> a.callable
fn (a, b) { a.x * b.y + a.y * b.y }

La syntaxe avec crochets permet d'interroger une structure comme un map :

ikc3> a[:sym]
:dot

Top : Documentation KC3

Précédent : 1.20 Ratio

Suivant : 1.22 Sym