Salva a tutti, ho un problemino con le variabili. Sono un principiante, quindi perdono per le castronerie che dirò :-) Ho un programmino che inserisce oggetti grafici (cerchi, rettangoli, punti, ecc) in una finestra, così suddiviso: script N.1 - "tool.rb" script N.2 - "oggetto.rb" script N.3 - "oggettotipo1.rb" script N.4 - "oggettotipo2.rb" .. script N.8 - "oggettotipo6.rb" Ogni script ha una classe. Lo script N.1, dopo un click su un controllo, chiama il N.2. Il N.2 ha diversi tipi di oggetto, e, dopo un click su un nuovo controllo, chiama uno degli script dal N.4 al N.8. Vorrei numerare tutti gli oggetti che l'utente inserisce diversificando in base al tipo di oggetto. Come faccio? Uso le variabili di classe @@numerotipo1, @@numerotipo2? e se si come si fa? Grazie a chiunque vorrà aiutarmi.
on 2010-08-16 09:59
on 2010-08-16 10:14
Il 16 agosto 2010 09:59, Alessandro Barracco <bomastudio@gmail.com> ha scritto: > Ogni script ha una classe. Ciao, giusto per capirci: hai delle classi inserite in vari file, oppure hai degli script? > Lo script N.1, dopo un click su un controllo, chiama il N.2. > Il N.2 ha diversi tipi di oggetto, e, dopo un click su un nuovo > controllo, chiama uno degli script dal N.4 al N.8. Qui, per esempio, cosa intendi? In che modo lo script N.1 chiama lo script N.2? > Vorrei numerare tutti gli oggetti che l'utente inserisce diversificando > in base al tipo di oggetto. > > Come faccio? Uso le variabili di classe @@numerotipo1, @@numerotipo2? e > se si come si fa? Non sono sicuro di aver afferrato il problema. La mia impressione (se mi sbaglio correggimi) è che manchi un po' di struttura generale, cioè che, al momento di contare quel che devi contare, non sai dove tenere i dati raccolti. Quello che credo tu voglia è avere una classe che rappresenta in qualche modo l'applicazione; questa classe avrà una variabile di istanza @oggetti, che ad esempio potrebbe essere fatta così:@oggetti = {OggettoTipo1 => 3, OggettoTipo2 => 5, ...} È difficile essere più precisi; prova a chiarire meglio il problema. pietro
on 2010-08-16 10:31
Pietro Giorgianni wrote: > > giusto per capirci: hai delle classi inserite in vari file, oppure hai > degli script? > Che differenza c'è? >> Lo script N.1, dopo un click su un controllo, chiama il N.2. >> Il N.2 ha diversi tipi di oggetto, e, dopo un click su un nuovo >> controllo, chiama uno degli script dal N.4 al N.8. > > Qui, per esempio, cosa intendi? In che modo lo script N.1 chiama lo > script N.2? > Lo script N.1 mostra (.show) una GUI creata con WxFormBuilder e XRCise su cui c'un un bottone: al click dell'utente su di esso viene chiamato lo script N.2. > > La mia impressione (se mi sbaglio correggimi) � che manchi un po' di > struttura generale, cio� che, al momento di contare quel che devi > contare, non sai dove tenere i dati raccolti. > HAI RAGIONE.... è proprio questo il dilemma!! > Quello che credo tu voglia � avere una classe che rappresenta in > qualche modo l'applicazione; questa classe avr� una variabile di > istanza @oggetti, che ad esempio potrebbe essere fatta > cos�:@oggetti = {OggettoTipo1 => 3, OggettoTipo2 => 5, ...} > > � difficile essere pi� precisi; prova a chiarire meglio il problema. > mmmm, vediamo di essere più chiari. Io avrei bisogno di tenere traccia del numero di oggetti inseriti dall'utente nello script N.1, che è quello principale. Ma siccome ho uno script (un file *.rb) per ogni oggetto che il programma gestisce (mi viene più semplice gestirli così), non so come "tenere" il numero "attuale". Cioè: Si avvia il programma: nessun oggetto presente. L'utente seleziona il comando "Quadrato", e ne inserisce 5 (dal numero 1 al numero 5). Poi seleziona il comando "Cerchio" e ne inserisce 2 (dal numero 1 al 2). Riseleziona "Quadrato e ne aggiunge 1 (il numero 6). ecc.
on 2010-08-16 10:48
Il 16 agosto 2010 10:31, Alessandro Barracco <bomastudio@gmail.com> ha scritto: > Pietro Giorgianni wrote: >> >> giusto per capirci: hai delle classi inserite in vari file, oppure hai >> degli script? >> > > Che differenza c'è? Facciamo così: gli script non esistono. Esistono oggetti, classi, metodi. Esiste il codice; per ragioni di comodità, poi, il codice si scrive non su un singolo file ma su più d'uno. Questo però non c'interessa, non ne parleremo mai, a meno che il problema non sia che non riesci a "caricare" la tal classe definita sul tal file (che non è il nostro caso, al momento). Credimi, la discussione sarà molto più chiara. > Lo script N.1 mostra (.show) una GUI creata con WxFormBuilder e XRCise > su cui c'un un bottone: al click dell'utente su di esso viene chiamato > lo script N.2. Ecco, di nuovo: che vuol dire "viene chiamato lo script N.2"? Come? Incolli qui il codice della chiamata, per favore? pietro
on 2010-08-16 11:34
Alessandro Barracco wrote: > Pietro Giorgianni wrote: >> >> giusto per capirci: hai delle classi inserite in vari file, oppure hai >> degli script? >> > > Che differenza c'è? Se vuoi un suggerimento... Studia un pò prima di fare domande altrimenti qualunque risposta otterrai sarà comunque troppo tecnica per te da capire...
on 2010-08-16 12:00
Alessandro Scolavino wrote: > Alessandro Barracco wrote: >> Pietro Giorgianni wrote: >>> >>> giusto per capirci: hai delle classi inserite in vari file, oppure hai >>> degli script? >>> >> >> Che differenza c'è? > > Se vuoi un suggerimento... > Studia un pò prima di fare domande altrimenti qualunque risposta > otterrai sarà comunque troppo tecnica per te da capire... Se devo essere onesto pensavo che: "Ruby è un linguaggio di scripting completamente a oggetti. Nato nel 1993 come progetto personale del giapponese Yukihiro Matsumoto (spesso chiamato semplicemente Matz), Ruby è stato il primo linguaggio di programmazione sviluppato in Oriente a guadagnare abbastanza popolarità da superare la barriera linguistica che separa l'informatica nipponica da quella internazionale e ad essere usato anche in Occidente in progetti di rilievo." (da Wikipedia, http://it.wikipedia.org/wiki/Ruby) e in quanto tale, ci fossero gli SCRIPT: "In informatica un linguaggio di scripting è un linguaggio di programmazione interpretato, destinato in genere a compiti di automazione del sistema (batch) o delle applicazioni (macro), o ad essere usato all'interno delle pagine web. I programmi sviluppati con questi linguaggi vengono detti script, termine della lingua inglese utilizzato in ambito teatrale per indicare il testo dove vengono tracciate le parti che devono essere interpretate degli attori. Gli script generalmente sono semplici programmi il cui scopo è quello di interagire con altri programmi molto più complessi in cui avvengono le operazioni più significative. Gli script si distinguono dai programmi con cui interagiscono, i quali solitamente sono implementati in un linguaggio differente e non interpretato. Inoltre, spesso gli script sono creati o modificati dall'utente finale." (da Wikipedia, http://it.wikipedia.org/wiki/Scripting). Forse non ho capito bene.
on 2010-08-16 12:06
Pietro Giorgianni wrote: > Incolli qui il codice della chiamata, per favore? > > il primo file è: # tool.rb require "Oggetti_gui" require "Oggetto_tipo1" require "Oggetto_tipo2" class NuovoOggetto < Frm_Oggetto def initialize super() evt_button(@btn_ok) {on_OK} evt_tool(@tbtn_oggetto1) { | event | oggetto1 } evt_tool(@tbtn_oggetto2) { | event | oggetto2 } end def oggetto1 @tipo = 1 end def oggeto2 @tipo = 2 end def on_OK if @tipo==1 OggettoTipo1.new() elsif @tipo==2 OggettoTipo2.new() end end end Il file N.2 contiene: # Oggetto_tipo1.rb class OggettoTipo1 def initialize .... end def disegna . # codice per il disegno end end
on 2010-08-16 12:31
Non proseguo la discussione ma ti invito a NON leggere le definizioni italiane tradotte molto spesso (quasi sempre) male da definizioni in inglese.
on 2010-08-16 12:37
Il 16 agosto 2010 12:06, Alessandro Barracco <bomastudio@gmail.com> ha
scritto:
> end
Ok, ora è più chiaro.
Beh, mi sembra che on_OK sia il posto giusto per i tuoi tracciamenti,
no?
Puoi usare una (o più d'una) variabile d'istanza cui, contestualmente
alla creazione di un nuovo oggetto, assegni qualcosa (non ho ben
capito se devi solo contare quanti oggetti di ogni tipo crei o anche
altro).
Fra parentesi, quella cascata di if non è proprio il massimo;
considera alcune alternative:
* Array
Objects = [OggettoTipo1, OggettoTipo2, OggettoTipo3, ...]
def on_OK
Objetcs[@tipo].new
end
* Hash
Objects = {:tipo1 => OggettoTipo1, :tipo2 => OggettoTipo2, ...}
* Altro, ci sono decine di modi per fare questa cosa.
Così, se il tuo scopo è solo contare gli oggetti di ogni tipo,
potresti semplicemente avere un hash che ha come chiavi le classi e
come valori il numero di oggetti creati finora:
def on_OK
@oggetti_contati[Objects[@tipo]] += 1
Objects[@tipo].new
end
pietro
on 2010-08-16 12:43
2010/8/16 Alessandro Barracco <bomastudio@gmail.com>: > > e in quanto tale, ci fossero gli SCRIPT: > > "In informatica un linguaggio di scripting è un linguaggio di > programmazione interpretato, destinato in genere a compiti di > automazione del sistema (batch) o delle applicazioni (macro), o ad > essere usato all'interno delle pagine web. > ... > Forse non ho capito bene. In questo contesto per script si intende un file direttamente eseguibile, ad esempio uno che contenga: -- #!/usr/bin/ruby puts "sono uno script direttamente eseguibile" -- e' uno script mentre un file che contenga -- class NuovoOggetto < Frm_Oggetto ... end -- e' una definizione di classe (e dei suoi metodi) che se lo esegui non fa nulla... e che pur essendo scritto in un linguaggio di scripting non e' corretto chiamarlo script. Ciao
on 2010-08-16 16:28
Luca De Marinis wrote: > > [...] per script si intende un file direttamente > eseguibile > mentre un file che contenga > -- > class NuovoOggetto < Frm_Oggetto > ... > end > -- > e' una definizione di classe (e dei suoi metodi) che se lo esegui non > fa nulla... e che pur essendo scritto in un linguaggio di scripting > non e' corretto chiamarlo script. > Grazie Luca, chiaro, semplice, coinciso, come ruby!!
on 2010-08-16 16:31
Pietro Giorgianni wrote: > Ok, ora � pi� chiaro. > Beh, mi sembra che on_OK sia il posto giusto per i tuoi tracciamenti, > no? > Puoi usare una (o pi� d'una) variabile d'istanza cui, contestualmente > alla creazione di un nuovo oggetto, assegni qualcosa (non ho ben > capito se devi solo contare quanti oggetti di ogni tipo crei o anche > altro). OK. provo e faccio sapere che succede. > Fra parentesi, quella cascata di if non � proprio il massimo; > considera alcune alternative: > > * Array > > Objects = [OggettoTipo1, OggettoTipo2, OggettoTipo3, ...] > > def on_OK > Objetcs[@tipo].new > end > > * Hash > > Objects = {:tipo1 => OggettoTipo1, :tipo2 => OggettoTipo2, ...} > > * Altro, ci sono decine di modi per fare questa cosa. > > Cos�, se il tuo scopo � solo contare gli oggetti di ogni tipo, > potresti semplicemente avere un hash che ha come chiavi le classi e > come valori il numero di oggetti creati finora: > > def on_OK > @oggetti_contati[Objects[@tipo]] += 1 > Objects[@tipo].new > end > > Immaginavo non fossero "da buon programmatore" :-) Provo a cambiare il codice (speriamo non mi confonda!!).
on 2010-08-17 09:26
Signori, grazie a tutti per gli utili consigli. Ho risolto il problema. So contare!!!! (è dalle elementari che non mi sento così felice di contare i numeri interi ...... :-)
on 2010-08-17 09:51
Il 17 agosto 2010 09:26, Alessandro Barracco <bomastudio@gmail.com> ha scritto: > Signori, grazie a tutti per gli utili consigli. Ho risolto il problema. > So contare!!!! (è dalle elementari che non mi sento così felice di > contare i numeri interi ...... :-) :) sì, è sempre una grande soddisfazione. pietro
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.