Gsub e sub

Ragazzi mi serve un aiuto…non riesco a trovare un errore che mi da
eclipse.La linea di codice in questione è la seguente:

puts “if #{privar1}#{princ}#{verifica.sub(/[’]/,’”’)}"

e mi da il seguente errore : private method `sub’ called for
nil:NilClass (NoMethodError)

Premetto che ho provato a fare valore=verifica.split e anche .join ma mi
cmq degli errori.Cosa posso fare???

2009/2/6 Stefano De nigris [email protected]:

e mi da il seguente errore : private method `sub’ called for
nil:NilClass (NoMethodError)

vuol dire che verifica vale nil, mentre dovrebbe essere una stringa.

Pietro G. wrote:

vuol dire che verifica vale nil, mentre dovrebbe essere una stringa.

Pietro ma la cosa divertente è che la stringa ha il valore che voglio
sostituire.Questo è quello che ho digitato:

ciao < ‘ciao’

e questo è il codice:

puts “#{privar1}#{princ}#{privar3.gsub(/[’]/,’”’)}"

dove privar1 la prima parola,princ è il simbolo di disuguaglianza,e la
terza parola è privar3.

2009/2/6 Stefano De nigris [email protected]:

dove privar1 la prima parola,princ è il simbolo di disuguaglianza,e la
terza parola è privar3.

prima era verifica, ora è privar3. qual è il valore di privar3? ruby
dice che questo valore è nil.

scusa puoi postare il codice?
in particolare la lina dove assegni il valore di privar3?

2009/2/6 Stefano De nigris [email protected]:

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


Piero B.
My Blog: cookedapple.net
My Books: anobii.com/petecocoon
LinkedIn: http://www.linkedin.com/in/pbozzolo
Linux User #403396

Please consider the environment before you print this email

Ecco quello che mi hai richiesto piero:
if ciao < ‘ciao’ questo è quello che ho digitato

ed a primariga[1] è associtato ciao,a primariga[2] il simbolo < e a
primariga[3] la parola ‘ciao’.

princ=primariga[2]
privar1=primariga[1]
privar3=primariga[3]

if princ =~ /</
puts “if #{privar1}#{princ}#{privar3.gsub(/[’]/,’”’)}"
end

prima era verifica, ora � privar3. qual � il valore di privar3? ruby
dice che questo valore � nil.

Il valore di privar3 è quello che ti ho fatto vedere prima:
‘ciao’
E’ impossibile che è nil in quanto c’è la virgoletta.

Piero B. wrote:

if ciao < ‘ciao’ questo � quello che ho digitato
Ok, quind lo prendi dallo stdin, non lo avevo capito
immagino che tu faccia una cosa del tipo

stringa_da_tastiera = STDIN.gets

digiti "if ciao < ‘ciao’ "
quindi stringa_da_tastiera conterra’
"if ciao < ‘ciao’ "

e arrivi al punto dove farai un
primariga = stringa_da_tastiera.split(’ ')

ed a primariga[1] � associtato ciao,a primariga[2] il simbolo < e a
primariga[3] la parola ‘ciao’.

per capirci primariga[0] e’ ‘if’?
se non lo e’ primariga[3] e’ valorizzato?

Si primariga[0] è if se no era semplice

Che vuol dire “brutalmente esegui attraverso irb ogni istruzione…e
vedi che e’”??Non ho capito.

if ciao < ‘ciao’ questo è quello che ho digitato
Ok, quind lo prendi dallo stdin, non lo avevo capito
immagino che tu faccia una cosa del tipo

stringa_da_tastiera = STDIN.gets

digiti "if ciao < ‘ciao’ "
quindi stringa_da_tastiera conterra’
"if ciao < ‘ciao’ "

e arrivi al punto dove farai un
primariga = stringa_da_tastiera.split(’ ')

ed a primariga[1] è associtato ciao,a primariga[2] il simbolo < e a
primariga[3] la parola ‘ciao’.

per capirci primariga[0] e’ ‘if’?
se non lo e’ primariga[3] e’ valorizzato?

brutalmente esegui attraverso irb ogni istruzione…
e vedi che e’

ciao
PB


Piero B.
My Blog: cookedapple.net
My Books: anobii.com/petecocoon
LinkedIn: http://www.linkedin.com/in/pbozzolo
Linux User #403396

Please consider the environment before you print this email

digita irb sulla shell (o sul prompt di windoz)
e scrivi ogni comando riga per riga e vedi cosa fa ogni singola riga.

‘brutalmente’ perche’ e’ un po’ poco elegante… :wink:

oppure verifica il risultato della split, dovrebbe essere come segue
primariga = stringa_da_tastiera.split(’ ')
=> [“if”, “ciao”, “<”, “‘ciao’”]

2009/2/6 Stefano De nigris [email protected]:

Che vuol dire “brutalmente esegui attraverso irb ogni istruzione…e
vedi che e’”??Non ho capito.

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


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


Piero B.
My Blog: cookedapple.net
My Books: anobii.com/petecocoon
LinkedIn: http://www.linkedin.com/in/pbozzolo
Linux User #403396

Please consider the environment before you print this email

Piero ho fatto come hai detto tu,cioè eseguire uno per uno e mi escono :
ciao,poi < e infine ‘ciao’.

Comunque la cosa che mi fa arrabbiare di più è che con gli altri if non
mi esce questo errore,il codice completo è:

princ=primariga[2]
privar1=primariga[1]
privar3=primariga[3]

if princ =~<>/
diverso=princ.gsub(/[</,"=").gsub(/[>],"!")
puts “if #{privar1.gsub(/[’]/,’”’)}#{diverso}#{privar3.gsub(/[’/,’"’)}"
elsif princ =~ />/
puts “if #{privar1.gsub(/[’]/,’”’)}#{princ}#{privar3.gsub(/[’]/,’"’)}"
elsif princ =~ />=/
puts “if #{privar1.gsub(/[’]/,’”’)}#{princ}#{privar3.gsub(/[’]/,’"’)}"
elsif princ =~ /<=/
puts “if #{privar1.gsub(/[’]/,’”’)}#{princ}#{privar3.gsub(/[’]/,’"’)}"
elsif princ =~ /=/
secele=princ.gsub(/[=]/,’==’)
puts"if #{privar1.gsub(/[’]/,’"’)}#{secele}#{privar3.gsub(/[’]/,’"’)}"
else princ =~ /</
puts “if #{privar1}#{princ}#{privar3}”

Non riesco a spiegarmi il motivo del non funzionamento dell’ultimo if.

On Fri, Feb 6, 2009 at 3:18 PM, Stefano De nigris
[email protected]wrote:

else princ =~ /</

Non ho letto tutto il thread, ma se hai una condizione, hai bisogno di
elsif
non else.

Ciao,
Antonio

http://antoniocangiano.com - Zen and the Art of Programming
http://math-blog.com - Mathematics is wonderful!
http://stacktrace.it - Aperiodico di resistenza informatica
Follow me on Twitter: http://twitter.com/acangiano
Currently writing “Ruby on Rails for Microsoft Developers” for Wrox.

Ah comunque hai ragione antonio ora va…pero non capisco questa cosa
dell’elsif.

Scusa antonio,ma l’ultimo dovrebbe essere un else???