Non capisco l'uso del simbolo "| |"

Ciao a tutti, sto pian piano imparando molto da questo framework(rails)
e mi vorrei togliere una bella curiosità:
Il seguente comando cosa fa?

session[:counter] ||= 0

In particolare non riesco a capire il simbolo “||”

Grazie a tutti per il supporto…

Il “||”, da solo, equivalente ad “or”. “||” + “=” sono un assegnazione
condizionale e funzionano cos: quel codice ti restituisce
session[:counter] se session[:counter] definito. Oppure, setta
session[:counter] a 0 e restituisce 0.

Sperando di non aver detto boiate e sempre pronto a inchinarmi a chi ne
sa di pi :slight_smile:

Alessandro

variable ||= valore verifica che variabile non sia false. nil viene
trattato come false in un controllo booleano :slight_smile:

Cerca conditional assignment qua:
http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators

Alessandro

On 21 Sep 2011, at 17:12 , fruit fruitjemm wrote:

Alessandro

Grazie ancora

Federico


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml

Alessandro M.
Web development - rios

[email protected]

www.aerios.it - @aeriosit on twitter

Il 21 settembre 2011 17:12, fruit fruitjemm [email protected] ha
scritto:

altrimenti se usato cosi:

variabile ||= valore verifica che la variabile non nil
(sostanzialmente fa un variabile.nil?), se lo setta la variabile a
valore…

Ciao,

a OPERATORE= b

solo una forma breve di
a = a OPERATORE b

Ad esempio,

a += 2
vuol dire:
a = a + 2

a -= 2
si legge:
a = a - 2

e cos via. Quindi,
a ||= b
significa:
a = a || b

Quindi no, .nil? non viene chiamato, viene piuttosto valutato il
valore di verit di a; se a valeva false, dopo l’operazione vale b,
altrimenti continua a valere a, come se fosse:

a = b unless a

pietro

Oltre a quello già detto da Alessandro e Pietro aggiungerei, per
comodità,
anche il seguente esempio.

var = false
puts “true” if var # non stampa nulla
puts “nil” if var.nil? # idem
puts “false” if var == false # stampa “false”
puts “not true” if !var # stampa “not true”

var = nil
puts “true” if var # non stampa nulla
puts “nil” if var.nil? # stampa “nil”
puts “false” if var == false # non stampa nulla
puts “false” if var === false # idem
puts “false” if var.eql?(false) # idem
puts “not true” if !var # stampa “not true”

quindi nota che nil viene trattato come false ma NON è uguale a false.


Duilio R.
http://sinetris.info

Alessandro
pietro
Duilio

Concetto afferrato…Grazie a tutti ancora

Federico

Alessandro M. wrote in post #1023121:

Il “||”, da solo, equivalente ad “or”. “||” + “=” sono un assegnazione
condizionale e funzionano cos: quel codice ti restituisce
session[:counter] se session[:counter] definito. Oppure, setta
session[:counter] a 0 e restituisce 0.

Sperando di non aver detto boiate e sempre pronto a inchinarmi a chi ne
sa di pi :slight_smile:

Alessandro

Grazie alessandro, quindi se usato tipo:

if (condizione1 || condizione2) ha la funzione di “or” logico,

altrimenti se usato cosi:

variabile ||= valore verifica che la variabile non è nil
(sostanzialmente fa un variabile.nil?), se lo è setta la variabile a
valore…???

Grazie ancora

Federico