# Scope delle variabili

**URL:** <https://www.ruby-forum.com/t/scope-delle-variabili/104467>\
**Category:** IT\
**Created:** [May 18, 2007, 11:35am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467 "2007-05-18T11:35:54Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:35am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/1 "2007-05-18T11:35:54Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:42am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/2 "2007-05-18T11:42:54Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:44am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/3 "2007-05-18T11:44:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:47am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/4 "2007-05-18T11:47:54Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:49am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/5 "2007-05-18T11:49:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 11:57am UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/6 "2007-05-18T11:57:55Z")

</div>

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](mailto:removed_email_address@domain.invalid) wrote:

> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
– Kia

[therubymine.com](http://therubymine.com) | be a miner

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 18, 2007, 12:16pm UTC](https://www.ruby-forum.com/t/scope-delle-variabili/104467/7 "2007-05-18T12:16:56Z")

</div>

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?”)
