# Referenziare

**URL:** <https://www.ruby-forum.com/t/referenziare/82310>\
**Category:** IT\
**Created:** [January 19, 2007, 9:56am UTC](https://www.ruby-forum.com/t/referenziare/82310 "2007-01-19T09:56:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![stefanof](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/aeb1de/32.png) [@stefanof](https://www.ruby-forum.com/u/stefanof)\
**Post date:** [January 19, 2007, 9:56am UTC](https://www.ruby-forum.com/t/referenziare/82310/1 "2007-01-19T09:56:14Z")

</div>

Buon giorno a tutti,  
mi chiamo Stefano e da alcuni giorni mi sono avvicinato a Ruby.  
Vi scrivo per sapere se qualcuno ha unâ€™idea di come risolvere un  
problema in Ruby.  
Problema:  
supponiamo di avere un grafico dove Ã¨ rappresentato un diagramma con la  
sua relativa scala, il problema Ã¨ come referenziarlo per poter sapere il  
valore x, y della posizione del cursore.  
Lo scopo di questo programma Ã¨ calcolare i momenti su di una superficie  
piana di una data dimensione sapendo la posizione (x, y) e il peso (w).

Câ€™Ã¨ qualcuno in grado di darmi unâ€™idea su come procedere?

Grazie anticipatamente e complimenti per il sito.

Stefano F.

---

<div class="post-metadata">

**Author:** ![stefanof](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/aeb1de/32.png) [@stefanof](https://www.ruby-forum.com/u/stefanof)\
**Post date:** [January 19, 2007, 4:29pm UTC](https://www.ruby-forum.com/t/referenziare/82310/2 "2007-01-19T16:29:37Z")

</div>

Dipende. La soluzione migliore imho Ã¨ di nascondere la reale  
implementazione tramite un oggetto. Es.

class GraficoMomenti

```
  def ref(x,y)
  ...
  end

  def setref(x,y,val)
  ...
  end

  def momento(x,y,w)
  ...
  end

```

end

CosÃ¬ il programma usa la classe grafico in maniera trasparente e tu  
puoi usare come indici ciÃ² che preferisci (float, un oggetto tipo  
Point, etc.).

I dati invece potresti memorizzarli in un hash (caso di tanti dati ma  
sparsi sul grafico), in un array (la tua griglia Ã¨ praticamente  
piena), oppure il risultato di una funzione se questi seguono una  
distribuzione continua. Potresti in tal caso anche fare in modo che il  
metodo #momento o #[] sia memoized se hai una griglia piena/continua  
ma accedi a pochi elementi o a sempre gli stessi. Insomma si cerca di  
evitare di costruire array 1000x1000 e calcolare per ogni cella un  
valore.

Ad esempio usando come implementazione un array (griglia piena, indici  
interi) e come interfaccia [] e []= puoi fare (untested code):

class GraficoMomenti

def initialize  
@arr = Array.new  
end

def   
@arr[x][y]  
end

def []=(x,y,val)  
unless @arr[x]  
@arr[x] = Array.new  
end

```
@arr[x][y]=val

```

end

end

a = GraficoMomenti.new  
a[1,2]=5  
puts a[1,2]

oppure con un Hash

class GraficoMomenti

def initialize  
@hash = Hash.new  
end

def   
@hash[[x,y]]  
end

def []=(x,y,val)  
@hash[[x,y]]=val  
end

end

a = GraficoMomenti.new  
a[1,2]=5  
puts a[1,2]

oppure supponendo che la tua griglia sia continua con una funzione  
memoized

require ‘memoize’

class GraficoMomenti

include Memoize

def fun(x,y)  
x^y  
end

def   
@arr[x][y]  
end

@cache = memoize(:[])

def []=(x,y,val)

# manipoliamo la cache di memoize

@cache[[[x,y]]] = val  
end

end

a = GraficoMomenti.new  
a[1,2]=5  
puts a[1,2]

---

<div class="post-metadata">

**Author:** ![stefanof](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/aeb1de/32.png) [@stefanof](https://www.ruby-forum.com/u/stefanof)\
**Post date:** [January 19, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/referenziare/82310/3 "2007-01-19T16:31:17Z")

</div>

Scusa, ma non ho capito bene: stai parlando di un’applicazione  
desktop? GTK? WxWidgets? Cocoa? O web? Quando dici “cursore” intendi  
il puntatore del mouse, giusto?  
Stefano F. wrote:

Buon giorno a tutti,  
mi chiamo Stefano e da alcuni giorni mi sono avvicinato a Ruby.  
Vi scrivo per sapere se qualcuno ha un’idea di come risolvere un  
problema in Ruby.  
Problema:  
supponiamo di avere un grafico dove è rappresentato un diagramma con la  
sua relativa scala, il problema è come referenziarlo per poter sapere il  
valore x, y della posizione del cursore.  
Lo scopo di questo programma è calcolare i momenti su di una superficie  
piana di una data dimensione sapendo la posizione (x, y) e il peso (w).

C’è qualcuno in grado di darmi un’idea su come procedere?

Grazie anticipatamente e complimenti per il sito.

Stefano F.

```
_______________________________________________________________________

```

* * *

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

–  
“The really rich people figure out how to dodge taxes anyway.” – George  
W. Bus  
h, explaining why high taxes on the rich are a failed strategy,  
Annandale, Va.,  
Aug. 9, 2004

References

1. [mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
2. [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

---

<div class="post-metadata">

**Author:** ![stefanof](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/aeb1de/32.png) [@stefanof](https://www.ruby-forum.com/u/stefanof)\
**Post date:** [January 20, 2007, 7:12pm UTC](https://www.ruby-forum.com/t/referenziare/82310/4 "2007-01-20T19:12:02Z")

</div>

Stefano F. wrote:

> Buon giorno a tutti,  
> mi chiamo Stefano e da alcuni giorni mi sono avvicinato a Ruby.  
> Vi scrivo per sapere se qualcuno ha unâ€™idea di come risolvere un  
> problema in Ruby.  
> Problema:  
> supponiamo di avere un grafico dove Ã¨ rappresentato un diagramma con la  
> sua relativa scala, il problema Ã¨ come referenziarlo per poter sapere il  
> valore x, y della posizione del cursore.  
> Lo scopo di questo programma Ã¨ calcolare i momenti su di una superficie  
> piana di una data dimensione sapendo la posizione (x, y) e il peso (w).
> 
> Câ€™Ã¨ qualcuno in grado di darmi unâ€™idea su come procedere?
> 
> Grazie anticipatamente e complimenti per il sito.
> 
> Stefano F.

Grazie a tutti per la pronta risposta, ora cerco come mettere in pratica  
i vs. consigli.

Stefano

---

<div class="post-metadata">

**Author:** ![stefanof](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/aeb1de/32.png) [@stefanof](https://www.ruby-forum.com/u/stefanof)\
**Post date:** [January 19, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/referenziare/82310/5 "2007-01-19T16:31:07Z")

</div>

Stefano, ti serve una cosa via web o standalone sul desktop? l’approccio  
cambia molto.
