[Issue 955] New: Passing arguments into functions - in, out, inout, const, and contracts
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Feb 12 19:41:18 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=955
Summary: Passing arguments into functions - in, out, inout,
const, and contracts
Product: D
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: www.digitalmars.com
AssignedTo: bugzilla at digitalmars.com
ReportedBy: jason.james.house at gmail.com
The description of in/out/inout/lazy leaves much to be desired. There's a
thread on the mailing list titled "Passing arguments into functions - in, out,
inout, const, and contracts" that has a number of people attempting to give
more complete descriptions.
It seems like parameters fall into two categories
Type 1: fundamental types, structs, fixed size arrays
Type 2: variable size arrays, objects
in:
Type 1 - Passed by value. changes to object have no external effect
Type 2 - Passed by reference. function can't change the reference but can
change the object
out:
Type 1 - Passed by reference, initialized by default initializer
Type 2 - Passed by reference, initialized by default initializer
inout:
Type 1 - Passed by reference, can change the reference(?)
Type 2 - Passed by reference, can change the reference
To me, the clarification of "in" parameters need clarification. For type 2,
I'd expect the equivalant of a C++ "const T&" but that isn't the case and
should really be spelled out.
--
More information about the Digitalmars-d-bugs
mailing list