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."
}
डी में, संदर्भ बनाम मान फ़ंक्शन पैरामीटर की बजाय प्रकार का एक गुण है। सी ++ से आ रहा है, यह मेरे लिए वास्तव में बुरा लगता है।मैं ऑब्जेक्ट को मूल्य से कैसे पास करूं?
ऐसा लगता है कि ref
कीवर्ड struct
एस स्वीकार करने वाले कार्यों के लिए पास-बाय-रेफरेंस को मजबूर करने के लिए है। क्या मूल्य के अनुसार class
ई पास करने के लिए ऐसा समकक्ष है?
उदाहरण के लिए, मान लें कि मैं एक फ़ंक्शन फ़ंक्शन बनाना चाहता हूं जो एक कस्टम कंटेनर क्लास की क्रमबद्ध प्रतिलिपि देता है। सी ++ में, यह का उपयोग करने जितना आसान है, Foo Sort(Foo& Object)
के विपरीत। मैं वस्तु को मैन्युअल रूप से कॉपी किए बिना डी में ऐसा करने का कोई तरीका नहीं देखता हूं।
कक्षाओं की वस्तुओं के साथ भी, यह अभी भी पास-दर-मूल्य है, क्योंकि यह संदर्भ है कि आप गुजर रहे हैं, मूल्य – newacct
@ न्यूवेक्ट मुझे लगता है कि हर कोई जानता है कि "पास-बाय-वैल्यू" का क्या अर्थ है। – Maxpm