If nested superfluo

Salve ragazzi,

mi sapete dire come evitare di fare un doppio controllo IF su di un
array e cioé:

controller:

@guides=Guide.find(:all)

view:

<%if @guides.dimension-%>
<%if @guides.dimension.size>2-%>
…fai qualcosa
<%else-%>
fai altro
<%end-%>
<%end-%>

il secondo if va in errore se la variabile @guides.dimension è “nil”
quindi risulta necessario il primo if.

E’ possibile evitare il primo if???

Grazie mille

Luigi

<%if @guides.dimension-%>
<%if @guides.dimension.size>2-%>
…fai qualcosa
<%else-%>
fai altro
<%end-%>
<%end-%>

puoi metterne uno con “if @guides.dimension && @guides.dimension.size >
2”


Andrea F.

doh! Pilu mi ha anticipato la risposta :stuck_out_tongue:

+1

A.

Il 13/04/2011 19:02, Andrea F. ha scritto:

Perfetto!..quindi && non corrisponde a and…

Scusate ma dove trovo tutte le possibili “congiunzioni logiche”
possibili come anche ||…

Grazie ancora

Ciao,

&& , in Ruby, a tutti gli effetti l’operatore AND.

Sostituisce il doppio if perch Ruby, come molti altri linguaggi,
usa la Valutazione a corto circuito - Wikipedia

Ciao,
Silvano

2011/4/14 Luigi M. [email protected]:


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


Considera l’ambiente prima di stampare questa email. Be a total user
rather than a complete waster.

. . . Silvano S. . . .
email: [email protected]
site: http://www.sistrall.it

Aggiungo due cose.

Primo: se stai operando in ambito Rails, dove la classe NilClass è
“dopata”, puoi tranquillamente scrivere:

if @guides.dimension.size>2

fregandotene del nil check tanto su dimension, quanto su size e sul
comparatore…

Secondo: se anche non lavori in ambito Ruby on Rails, puoi tu stesso
pensare di “estendere” NilClass implementando i metodi “dimension”,
“size” e
“>” : è il bello di Ruby!

Ciao

Andrea

diciamo che ‘&&’ e ‘and’, cos come ‘||’ e ‘or’ si comportano in modo
simile,
anche se hanno delle differenze, ti consiglio di leggere questo
articolo:

http://www.themomorohoax.com/2008/12/08/and-vs-amperand-in-ruby

ciao,
A.

Il 14/04/2011 09:49, Luigi M. ha scritto:

Il 20/04/2011 13:51, Andrea Salicetti ha scritto:

Aggiungo due cose.

Primo: se stai operando in ambito Rails, dove la classe NilClass
“dopata”, puoi tranquillamente scrivere:

if @guides.dimension.size>2

fregandotene del nil check tanto su dimension, quanto su size e sul
comparatore…

non credo sia corretto evitare il nil check. se dimension nil, il
metodo size
non esiste, quindi ti becchi un NoMethodError

mi sono perso qualcosa?

A.

questo tipo di monkey patching credo potrebbe comportarti grossi
problemi
guardando l’applicazione nella sua interezza, anzich focalizzarsi su un
singolo
aspetto di una view. anche perch magari bene sapere perch un oggetto
nil
quando ti aspetti che non lo sia :wink:

a questo punto, se vuoi rimanere ordinato, meglio scrivere un helper.

ciao,
A.

Il 20/04/2011 16:28, Andrea Salicetti ha scritto:

No, io mi sono perso un pezzo del commento, sorry, questo:

encoding: utf-8

class NilClass

do not raise error when calling messages on nil object.

def method_missing(method_sym, *arguments, &block)
return nil
end
end

Con questa estensione a NilClass puoi evitare la catena di nil check, ma
occorre valutare bene se è proprio ciò che si vuole…

Ciao,

Andrea