SOFTWARE > Linguaggi di programmazione e scripting

dead

(1/2) > >>

legacy:
dead

Allanon:

--- Citazione da: legacy - 28 Agosto 2015, 16:00:21 ---io dico: un funzione per ogni tipo

plauso di alcuni, sdegno di altri, quindi …. l'informatica e' un sotto insieme della matematica
la matematica non e' una opinione, ma il suo sotto insieme si  :o :o :o :o


boh, cmq mi sembrava una soluzione pulita, quantomeno comoda, ed in ADA fanno proprio cosi'

--- Termina citazione ---

printf è una piaga (anche il C è una piaga)  ;D
Quelle poche volte che mi ci sono imbattuto in alcuni sorgenti che tentavo di decifrare partivano brutte parole e cattivi pensieri  ::)

Innanzitutto printf() ha senso?  ::)

Esempio:

--- Citazione ---printf("Oggi sono andato al bar %d volte per bere un %s ma non ho pagato perchè mi hanno chiesto %3.2f", 3, 'caffè', 20.5)
--- Termina citazione ---
Se qua ci mettiamo altri 3 o 4 segnaposto non ci si capisce più una mazza...

Io sono per le cose semplici e sopratutto leggibili, non mi sbilancio con il C perchè sono una capra quindi uso uno pseudocodice dove & è un operatore di concatenazione, Int() conversione a intero, Str() conversione a stringa e PadNum() formatta un numero a n decimali:


--- Codice: ---printf("Oggi sono andato al bar " & PadNum(a, 0) & " volte per bere un " & Str(b) & " ma non ho pagato perchè mi hanno chiesto " & PadNum(c, 2) & " Euro.", { a=3, b='caffè', c=20.5 })
--- Termina codice ---

Questa forma mi permette anche di usare cose molto più leggibili tipo:


--- Codice: ---printf("Oggi sono andato al bar " & PadNum(a, 0) & " volte per bere un " & Str(bevanda) & " ma non ho pagato perchè mi hanno chiesto " & PadNum(conto, 2) & " Euro.", { volte=3, bevanda='caffè', conto=20.5 })
--- Termina codice ---

A questo punto mi permetto di usare questa forma  :P

--- Citazione ---printf("Oggi sono andato al bar %volte volte per bere un %bevanda ma non ho pagato perchè mi hanno chiesto %conto Euro.",
   { volte = PadNum(2, 0),
     bevanda = "caffè",
     conto = PadNum(20.5, 2) })
--- Termina citazione ---

Altro che &03.4f%d89826$&££/&/(&)("=))£/&$&  :o :o :o :o :o :o :o :o :o :o :o :o

In LUA una roba del genere si implementa in 30 secondi netti.

TheKaneB:
Io sono per l'approccio moderno delle Non Mutable Strings, in cui si procede pressappoco come ha descritto Allanon, anche se in realtà la conversione a stringa è quasi sempre implicita.

In Java farei così:

Persona p = new Persona("Pino");
int numero = 7;
String a = "Ciao " + p + ", come stanno i tuoi " + numero + " nani?";

dove la classe Persona eredita forzatamente il metodo toString() dalla classe padre Object. E' poco elegante, poco ortogonale, ma efficace, non prolisso e non ti sminchia lo stack.

TheKaneB:
In C++, volendo, puoi usare std::string che è immutabile e supporta la concatenazione "furba" con l'operatore +.
Ovviamente non è altrettanto type-safe quanto il Java, e devi avere qualche accortezza in più nel definire gli operatori di conversione verso std::string, ma fa il suo porco lavoro meglio del C sicuramente.

TheKaneB:
because they can  ;D

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa