import std.stdio;
class IntegerContainer
{
public int Integer = 1;
}
void DoubleInteger(IntegerContainer Container)
{
Container.Integer *= 2;
}
void main()
{
IntegerContainer Container = new IntegerContainer; // Internal integer defaults to one.
DoubleInteger(Container); // Internal integer changes to two inside the function.
writefln(Container.Integer); // Prints "2."
}
En D, la referencia en función del valor es un rasgo del tipo, más que del parámetro de la función. Viniendo de C++, esto se siente realmente mal para mí.¿Cómo paso un objeto por valor?
Parece que hay una palabra clave ref
para forzar el paso por referencia para las funciones que aceptan struct
s. ¿Hay un equivalente para pasar class
es por valor?
Por ejemplo, supongamos que quiero hacer una función que devuelva una copia ordenada de una clase de contenedor personalizada. En C++, es tan simple como usar Foo Sorted(Foo Object)
, a diferencia de Foo Sort(Foo& Object)
. No veo forma de hacer esto en D sin copiar manualmente el objeto.
incluso con objetos de clases, todavía está pasado de moda, porque es la referencia que está pasando, por valor – newacct
@newacct Creo que todos saben lo que significa "pasar por valor". – Maxpm