Scope delle variabili


#1

Anteponendo una @ la variabile e’ visibile da tutti i metodi all’interno
della classe.
Se volessi che una variabile sia visibile solo all’interno di un metodo
escludendo tutti gli altri?

def sendMail(from, from_alias, to, to_alias, subject, message)
msg = <<END_OF_MESSAGE
From: #{from_alias} <#{from}>
To: #{to_alias} <#{to}>
Subject: #{subject}

#{message}
END_OF_MESSAGE
Net::SMTP.start(‘mail’) do |smtp|
smtp.send_message msg, from, to
end
end

questo metodo non funziona perche’ le variabili msg, from e to non sono
visibili all’interno del blocco smtp.
L’unica soluzione sarebbe quella di rendere msg @msg e assegnare from e
to ad altre variabili con scope di classe?


#2

Dovrebbero essere visibili invece. Sono variabili locali e non ci
dovrebbero essere problemi. Mi sa che il problema sta da qualche altra
parte!


#3

Il giorno ven, 18/05/2007 alle 11.42 +0200, david ha scritto:

Dovrebbero essere visibili invece. Sono variabili locali e non ci
dovrebbero essere problemi. Mi sa che il problema sta da qualche altra
parte!

ho provato con @msg anziche’ msg e dando al from e al to dei valori e
cosi’ funziona.


#4

ma se usi “msg” invece di “@msg” no?


#5

Il giorno ven, 18/05/2007 alle 11.46 +0200, david ha scritto:

ma se usi “msg” invece di “@msg” no?

a quanto pare no.
fatto usando irb funziona, se invece inserisco tutto il codice dentro un
metodo che viene richiamato da un altro metodo all’interno della stessa
classe devo usare @msg per farlo funzionare.


#6

prova a mettere un buon vecchio “puts msg” come prima riga del blocco e
vedi
che ti dà

On 5/18/07, Mauro S. removed_email_address@domain.invalid wrote:


Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml


– Kia

therubymine.com | be a miner


#7

Boh, senti, non so che dire. Ripeto che secondo me hai qualcosa altro
che non ti va. Lo scope non c’entra nulla. A me questo funziona:

#!/usr/bin/env ruby
require ‘net/smtp’
class Mailerino
def sendMail(from=“defSender”,from_alias="",
to=“defReciever”,to_alias=“in nome”, subject=“aSubject”, message =
“aMessage”)
msg = <<-THEMAIL
From: #{from_alias} <#{from}>
To:#{to_alias} <#{to}>
Subject:#{subject}

#{message}
THEMAIL

Net::SMTP.start(‘mail’) do |smtp|
smtp.send_message msg, from, to
end
end
end

m = Mailerino.new
m.sendMail(“removed_email_address@domain.invalid”,“jhkj”,“removed_email_address@domain.invalid”,“il nome”,“senti un
po’”, “funzia?”)