Discussioni modulo:Font to span


Ultimo commento: 7 anni fa, lasciato da Moroboshi in merito all'argomento Modifiche

Modifiche

Ciao, così al volo la riga

if size~=nil and string.match(size, "^[1-7]$") then size=stab[size] end

puoi semplificarla in:

if size~=nil and size = stab[size] or size end

Se trova il valore size nella tabella allora assegna stab[size], se non lo trova allora stab[size] ritorna nil e allora viene valutata la seconda parte dell'istruzione e riassegna. ha il vantaggio che se modifichi la tabella stab non devi modificare il confronto per controllare se la chiave è valida. Stasera butto un occhio se mi viene in mente altro.--Moroboshi scrivimi 14:14, 4 set 2017 (CEST)Rispondi

[@ Moroboshi] Ciao, grazie mille per l'aiuto. Credo di aver capito l'idea e provvedo con la correzione. L'importante è che vada a ricercare il valore nella tabella solo se size è un numero da 1 a 7, che non sia seguito da nulla: ad esempio se fosse 5 px dovrebbe lasciarlo com'è; ma a quanto mi sembra di capire dovrebbe comportarsi esattamente così. A margine: la tabella in teoria non va più modificata, il font accetta come size un numero da 1 a 7 e le dimensioni corrispondenti in px sono quelle, frutto di test super-scientifici effettuati in sandbox (confronto con occhiometro). Grazie ancora --Daimona Eaytoy (Scrivimi!) 14:21, 4 set 2017 (CEST)Rispondi
Esatto si basa su due elementi:
  • quando cerchi una chiave in una tabella Lua ritorna nil se non la trova,
  • Le operazioni logiche sono valutate da sx a dx e sono lazy, cioè una volta che la funzione è sicuramente vera o sicuramente falsa ritorna il valore dell'ultimo operando.
Nota: in Lua solo nil e false sono falsi tutto il resto è vero. Significa anche che questo trucco non funziona se la tabella può contenere valori false, ma non è questo il caso.
Quindi se il primo operando dell'or è vero non procede oltre e ritorna il valore dell'operando (in questo caso stab[size]), se è falso prosegue con l'or e ritorna la seconda parte dell'or (in questo caso il valore originale di size). Si deve comunque fare il controllo if size~=nil perchè se size fosse nil allora tentare stab[size] genererebbe un errore.
C'è anche una libreria (mw.html) per semplificare la generazione di codice html, ma dovrei vedere come applicarla a questo caso.--Moroboshi scrivimi 14:46, 4 set 2017 (CEST)Rispondi
Ritorna alla pagina "Font to span".