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."
}
W D wartość referencyjna względem wartości jest cechą typu, a nie parametru funkcji. Pochodzę z C++, to jest dla mnie naprawdę złe.Jak przekazać obiekt według wartości?
Wygląda na to, że istnieje słowo kluczowe ref
wymuszające przekazywanie referencji dla funkcji akceptujących s. struct
. Czy istnieje odpowiednik dla przekazania wartości class
es?
Na przykład, powiedzmy, że chcę utworzyć funkcję funkcji, która zwraca posortowaną kopię niestandardowej klasy kontenera. W języku C++ jest to tak proste jak używanie Foo Sorted(Foo Object)
, w przeciwieństwie do Foo Sort(Foo& Object)
. Nie widzę możliwości zrobienia tego w D bez ręcznego kopiowania obiektu.
nawet z obiektami zajęć, nadal jest wartością dodatkową, ponieważ jest to odniesienie, które przechodzisz, o wartości – newacct
@newacct Myślę, że każdy wie, co rozumie się przez "przekazywanie wartości". – Maxpm