2012-01-16 7 views

Respuesta

9

En resumen, debe utilizar algún tipo de referencia explícita.

En primer lugar, a diferencia de C++/C#/Java donde es nombrado este, se puede usar cualquier nombre que desee. El motivo por el que debe usar llamadas explícitas es Matlab designers decision. La idea era apoyar las operaciones vectoriales de Matlab en objetos, como si fueran estructuras . El siguiente es un fragmento del foro:

Si bien los idiomas con un parámetro de objeto implícito proporcionan una palabra "this" para acceder al objeto implícito, por lo general no requieren que usted pueda acceder a una propiedad través de "este ". Si MATLAB tiene propiedades implícitas, la extensión lógica de para los objetos basados ​​en matrices sería indexar en nada:
S = S + (k) .Valor;

Editar: Tras el buen comentario de @AndrewJanke, me gustaría añadir que MATLAB podría haber tenido esta referencia implícita, y la única fuerza para usarlo en la indexación de objetos basados ​​en matrices . Sin embargo, este enfoque no fue elegido por los diseñadores de MATLAB.

+0

Los métodos de la clase Python no son necesarios para nombrar la referencia de instancia explícita 'self'. También es una convención, como en MATLAB. –

+0

@ AndréCaron, gracias, actualicé mi respuesta. –

+0

Creo que esta lectura pasa por alto el motivo central: envío múltiple, referido oblicuamente con "simetría entre múltiples parámetros de objeto" en el artículo vinculado. P.ej. para un método 'f (A, B, C)', cualquiera de las entradas podría ser el objeto de envío del método, o podrían ser conceptualmente pares, por lo que no está claro a priori que se convierta en 'this'. Incluso podría llamarse 'f (2, 3, X)'. La preocupación de indexación podría resolverse teniendo un parámetro 'this' implícito y solo requiriendo que lo use cuando estaba usando'() '-indexing dentro del método, como en C++ si llama a un' (] 'sobrecargado. (Creo). –

Cuestiones relacionadas