I can't get passing an array by reference to work anymore...
Nicholas Wilson via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Sep 24 19:58:48 PDT 2015
On Friday, 25 September 2015 at 02:37:22 UTC, TheGag96 wrote:
> So I'm just doing a small test program here:
> http://pastebin.com/UYf2n6bP
>
> (I'm making sure I know quicksort for my algorithms class, I
> know functionally this won't work as-is)
>
> I'm on Linux, 64-bit, DMD 2.068.1, and when I try to compile
> this I'm getting:
>
> quicksort.d(18): Error: function quicksort.quickSort (ref int[]
> arr) is not callable using argument types (int[])
> quicksort.d(19): Error: function quicksort.quickSort (ref int[]
> arr) is not callable using argument types (int[])
>
> No matter how I attempt to define the array test, it will never
> allow me to pass it by reference no matter what. I even
> copy-pasted some example code from here
> (https://en.wikibooks.org/wiki/D_(The_Programming_Language)/d2/Pointers,_Pass-By-Reference_and_Static_Arrays#Pass_By_Reference, bottom of the page), and it gave the same error.
>
> What's the problem here? I SWEAR I've passed arrays by
> reference before just like this. Thanks guys.
Im not sure why but..
Are you sure that you want to pass the array by ref?
In D the type int[] is like struct { size_t length; int* ptr;}
which means you are accessing through a pointer and thus changing
the data but not reassigning the array as you would with ref.
That link may well be out of date, Ali's Book
(http://ddili.org/ders/d.en/index.html) is a great resource if
you are learning.
Alternately look at the std algorithm implementation of quicksort.
Nic
More information about the Digitalmars-d-learn
mailing list