2015-03-22 17:06 GMT+01:00 enrico franchi <enrico.fran...@gmail.com>:
> > 2015-03-22 15:35 GMT+00:00 Manlio Perillo <manlio.peri...@gmail.com>: > >> Tra l'altro il tutto è complicato dal fatto, AFAIK, che ciascuno degli >> operandi può avere effetti collaterali. >> Ad esempio: >> https://play.golang.org/p/jc0vKCWFu7 >> > > Scusa non comprendo... in C (e in Go) && introduce un sequence point. > Quindi *sai* l'ordine in cui le cose sono valutate. > Logical operators apply to boolean values and yield a result of the same type as the operands. The right operand is evaluated conditionally. Senza il "conditionally", il compilatore potrebbe evaluare `*p` anche se `p != ni`l è falso. Ovviamente in C (e in GO) se scrivi & *non* hai un sequence point. > In realtà, come dici dopo, Go non ha la nozione di sequence point. > Solo che in C non hai garanzie sull'ordine di valutazione. In Go invece > hanno fatto una cosa molto saggia ed e' garantirti da specifica che > l'ordine di valutazione delle espressioni e' lessicografico da sinistra a > destra. Ovvero se scrivi f() & g() (ammesso che tu lo possa scrivere... in > generale hai cazzi con i tipi) hai certezza che f() sara' valutato prima di > g(). > > Dopo di che mi gira il cazzo perche' in Go non c'e' un singolo modo > decente per convertire un booleano in intero (no, fare un if non e' un modo > decente) e per *nessuna* ragione che a me paia sensata (per favore, > qualcuno mi spieghi il perche') & e | non funzionano con operandi > booleani. Voglio dire, sarebbero operazioni perfettamente definite e type > safe. WTF! > > La risposta ufficiale credo sia : "ti scrivi delle funzioni apposite " Ciao Manlio
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python