Thread overview | |||||
---|---|---|---|---|---|
|
July 24, 2014 Passing an array by reference? | ||||
---|---|---|---|---|
| ||||
1 class Test 2 { 3 int[][] array; 4 this(ref int[][] d) 5 { 6 array = d; 7 } 8 9 } 10 11 void main() 12 { 13 Test t = new Test([[1,1],[1,1]]); //does not compile 14 } 15 what is the best way to pass a literal ([[1,2],[3,4]]) by reference? Is using ref the best way? I am still a bit fuzzy with in/out and scope |
July 24, 2014 Re: Passing an array by reference? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rishub Nagpal | On Thursday, 24 July 2014 at 16:06:00 UTC, Rishub Nagpal wrote:
> 1 class Test
> 2 {
> 3 int[][] array;
> 4 this(ref int[][] d)
> 5 {
> 6 array = d;
> 7 }
> 8
> 9 }
> 10
> 11 void main()
> 12 {
> 13 Test t = new Test([[1,1],[1,1]]); //does not compile
> 14 }
> 15
>
>
> what is the best way to pass a literal ([[1,2],[3,4]]) by reference? Is using ref the best way? I am still a bit fuzzy with in/out and scope
Why do you need to pass the array by reference? D's slices are just windows on to memory, they don't copy the contents when you pass them around.
Anyway, if you do need ref, the problem is that [[1,1],[1,1]] is a temporary, an rvalue, and ref can't take rvalues.
|
July 24, 2014 Re: Passing an array by reference? | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin | On Thursday, 24 July 2014 at 16:15:44 UTC, John Colvin wrote: > On Thursday, 24 July 2014 at 16:06:00 UTC, Rishub Nagpal wrote: >> 1 class Test >> 2 { >> 3 int[][] array; >> 4 this(ref int[][] d) >> 5 { >> 6 array = d; >> 7 } >> 8 >> 9 } >> 10 >> 11 void main() >> 12 { >> 13 Test t = new Test([[1,1],[1,1]]); //does not compile >> 14 } >> 15 >> >> >> what is the best way to pass a literal ([[1,2],[3,4]]) by reference? Is using ref the best way? I am still a bit fuzzy with in/out and scope > > Why do you need to pass the array by reference? D's slices are just windows on to memory, they don't copy the contents when you pass them around. > > Anyway, if you do need ref, the problem is that [[1,1],[1,1]] is a temporary, an rvalue, and ref can't take rvalues. Ah I did not know that. jwhear on IRC cleared it up for me http://dpaste.dzfl.pl/c7ae7e71d45c |
Copyright © 1999-2021 by the D Language Foundation