questo articolo sembra utilizzare lo stesso codice:
http://toolmantim.com/articles/bangbang_your_nil_is_dead
In sostanza, sembra che è solo lo scopo di applicare la non (!) Operatore due volte - essenzialmente forzando il metodo a restituire vero o falso anziché vero, falso o nulla.
Cioè, se @current_user
è pari a zero, chiamando
def logged_in?
@current_user()
end
tornerà a zero. Cambiandolo (singolo scoppio)
def logged_in?
[email protected]_user()
end
restituisce true, e cambiando in seguito (doppia scoppio)
def logged_in?
[email protected]_user()
end
restituirà false - che è più applicabile (ed utilizzabili) di zero.
Un altro modo di scrivere che sarebbe stato:
def logged_in?
[email protected]_user().nil?
end
ma che non copre il caso in cui @current_user
è falso, e credo che il !!
è più bello da guardare.
la il personaggio è chiamato botto. googling per "ruby double bang" porta dei buoni risultati. – shsteimer
Ahh sì, ho dimenticato il termine bang per i punti esclamativi. Bang è un termine americano? In realtà non lo usiamo nel Regno Unito, ne abbiamo mai sentito parlare solo in termini di software. Un altro esempio è C#, che nel Regno Unito sarebbe generalmente chiamato C hash. – Jim
possibile duplicato di [Che cosa fa !! significa in ruby?] (http://stackoverflow.com/questions/524658/what-does-mean-in-ruby) –