Esiste un modo per rendere il modo predefinito in cui una classe accede a un campo all'interno della classe?

2

Sto provando a scrivere un wrapper per il seguente bit di codice di scala:

val vertBuffer: FloatBuffer = createFloatBuffer(vertex_positions.length)
vertBuffer.put(vertex_positions)
vertBuffer.flip()

Tuttavia, la classe verrà usata quasi esclusivamente in cose del genere:

val vboId = glGenBuffers()
glBindBuffer(GL_ARRAY_BUFFER, vboId)
glBufferData(GL_ARRAY_BUFFER, vertBuffer, GL_STATIC_DRAW)

Sto cercando un modo per evitare di dover digitare qualcosa di simile a

vertBufferWrapper.getWrapped

ed essere in grado di scrivere solo

vertBufferWrapper

Grazie per il tuo tempo.

    
posta Jeff 09.06.2015 - 17:37
fonte

1 risposta

2

Non archiviarlo in una classe avvolta, in primo luogo. Basta creare una funzione di trasformazione dalla struttura dati di cui hai bisogno:

def createFlippedBuffer(vertex_positions: Positions) : FloatBuffer = {
  val vertBuffer: FloatBuffer = createFloatBuffer(vertex_positions.length)
  vertBuffer.put(vertex_positions)
  vertBuffer.flip()
  vertBuffer
}

Non è chiaro se tu avessi altri motivi per scegliere un wrapper in primo luogo, ma un'altra opzione è pimp my library , che consente di aggiungere metodi a classi esistenti senza utilizzare esplicitamente un wrapper.

    
risposta data 09.06.2015 - 18:40
fonte

Leggi altre domande sui tag