digitalmars.D.learn - Dynamic array initialisers
- Gide Nwawudu (19/19) Apr 17 2008 I have the following code, I am attempting to initialise a variable
- Chris R. Miller (4/26) Apr 17 2008 You're not using correct syntax. The first problem line, auto numbers3...
- Gide Nwawudu (6/32) Apr 17 2008 I was trying create a dynamic array of ints in the same way that
- Robert Fraser (4/42) Apr 17 2008 It's implicitly castable to a dynamic array (I think). Just don't use
- Gide Nwawudu (4/46) Apr 18 2008 Thanks, maybe I've been (ab)using auto too much.
- Robert Fraser (3/6) Apr 18 2008 No you haven't; that's a perfectly clear use of auto. It's a language
- Gide Nwawudu (4/10) Apr 21 2008 I've added it as a bug.
- Jarrett Billingsley (5/6) Apr 18 2008 Sorry, that's entirely wrong. First, he wants an int[]. Second, this i...
I have the following code, I am attempting to initialise a variable with a dynamic array. Should the code compile or are lines 6 and 7 just wrong? test.d ------ import std.stdio; void main() { auto numbers1 = [ 1, 2, 3, 4]; // ok, static array int[4] int[] numbers2 = ([ 1, 2, 3, 4])[]; // ok auto numbers3 = [ 1, 2, 3, 4][]; // Doesn't compile int[] numbers4 = [ 1, 2, 3, 4][]; // Doesn't compile writefln(typeof(numbers1).stringof); writefln(typeof(numbers2).stringof); } C:\>dmd test.d a.d(6): semicolon expected following auto declaration, not '[' a.d(7): semicolon expected, not '[' Gide
Apr 17 2008
Gide Nwawudu Wrote:I have the following code, I am attempting to initialise a variable with a dynamic array. Should the code compile or are lines 6 and 7 just wrong? test.d ------ import std.stdio; void main() { auto numbers1 = [ 1, 2, 3, 4]; // ok, static array int[4] int[] numbers2 = ([ 1, 2, 3, 4])[]; // ok auto numbers3 = [ 1, 2, 3, 4][]; // Doesn't compile int[] numbers4 = [ 1, 2, 3, 4][]; // Doesn't compile writefln(typeof(numbers1).stringof); writefln(typeof(numbers2).stringof); } C:\>dmd test.d a.d(6): semicolon expected following auto declaration, not '[' a.d(7): semicolon expected, not '['You're not using correct syntax. The first problem line, auto numbers3 = [ 1, 2, 3, 4][];, doesn't work because you forgot a comma. I think you want auto to be evaluated as int[][], however, you have two arrays without a comma seperator. It should be like this: auto numbers3 = [ 1, 2, 3, 4], []; The second line has the same problem, as well as it's improperly declared. It should be declared as int[][].
Apr 17 2008
On Thu, 17 Apr 2008 18:10:20 -0400, Chris R. Miller <lordSaurontheGreat gmail.com> wrote:Gide Nwawudu Wrote:I was trying create a dynamic array of ints in the same way that "hello"[] creates a dynamic array of chars. Maybe I'm mixing up array and string syntaxes? GideI have the following code, I am attempting to initialise a variable with a dynamic array. Should the code compile or are lines 6 and 7 just wrong? test.d ------ import std.stdio; void main() { auto numbers1 = [ 1, 2, 3, 4]; // ok, static array int[4] int[] numbers2 = ([ 1, 2, 3, 4])[]; // ok auto numbers3 = [ 1, 2, 3, 4][]; // Doesn't compile int[] numbers4 = [ 1, 2, 3, 4][]; // Doesn't compile writefln(typeof(numbers1).stringof); writefln(typeof(numbers2).stringof); } C:\>dmd test.d a.d(6): semicolon expected following auto declaration, not '[' a.d(7): semicolon expected, not '['You're not using correct syntax. The first problem line, auto numbers3 = [ 1, 2, 3, 4][];, doesn't work because you forgot a comma. I think you want auto to be evaluated as int[][], however, you have two arrays without a comma seperator. It should be like this: auto numbers3 = [ 1, 2, 3, 4], []; The second line has the same problem, as well as it's improperly declared. It should be declared as int[][].
Apr 17 2008
Gide Nwawudu wrote:On Thu, 17 Apr 2008 18:10:20 -0400, Chris R. Miller <lordSaurontheGreat gmail.com> wrote:It's implicitly castable to a dynamic array (I think). Just don't use auto (isn't that "feature" annoying?): int[] numbers = [1, 2, 3, 4];Gide Nwawudu Wrote:I was trying create a dynamic array of ints in the same way that "hello"[] creates a dynamic array of chars. Maybe I'm mixing up array and string syntaxes? GideI have the following code, I am attempting to initialise a variable with a dynamic array. Should the code compile or are lines 6 and 7 just wrong? test.d ------ import std.stdio; void main() { auto numbers1 = [ 1, 2, 3, 4]; // ok, static array int[4] int[] numbers2 = ([ 1, 2, 3, 4])[]; // ok auto numbers3 = [ 1, 2, 3, 4][]; // Doesn't compile int[] numbers4 = [ 1, 2, 3, 4][]; // Doesn't compile writefln(typeof(numbers1).stringof); writefln(typeof(numbers2).stringof); } C:\>dmd test.d a.d(6): semicolon expected following auto declaration, not '[' a.d(7): semicolon expected, not '['You're not using correct syntax. The first problem line, auto numbers3 = [ 1, 2, 3, 4][];, doesn't work because you forgot a comma. I think you want auto to be evaluated as int[][], however, you have two arrays without a comma seperator. It should be like this: auto numbers3 = [ 1, 2, 3, 4], []; The second line has the same problem, as well as it's improperly declared. It should be declared as int[][].
Apr 17 2008
On Thu, 17 Apr 2008 17:33:45 -0700, Robert Fraser <fraserofthenight gmail.com> wrote:Gide Nwawudu wrote:Thanks, maybe I've been (ab)using auto too much. GideOn Thu, 17 Apr 2008 18:10:20 -0400, Chris R. Miller <lordSaurontheGreat gmail.com> wrote:It's implicitly castable to a dynamic array (I think). Just don't use auto (isn't that "feature" annoying?): int[] numbers = [1, 2, 3, 4];Gide Nwawudu Wrote:I was trying create a dynamic array of ints in the same way that "hello"[] creates a dynamic array of chars. Maybe I'm mixing up array and string syntaxes? GideI have the following code, I am attempting to initialise a variable with a dynamic array. Should the code compile or are lines 6 and 7 just wrong? test.d ------ import std.stdio; void main() { auto numbers1 = [ 1, 2, 3, 4]; // ok, static array int[4] int[] numbers2 = ([ 1, 2, 3, 4])[]; // ok auto numbers3 = [ 1, 2, 3, 4][]; // Doesn't compile int[] numbers4 = [ 1, 2, 3, 4][]; // Doesn't compile writefln(typeof(numbers1).stringof); writefln(typeof(numbers2).stringof); } C:\>dmd test.d a.d(6): semicolon expected following auto declaration, not '[' a.d(7): semicolon expected, not '['You're not using correct syntax. The first problem line, auto numbers3 = [ 1, 2, 3, 4][];, doesn't work because you forgot a comma. I think you want auto to be evaluated as int[][], however, you have two arrays without a comma seperator. It should be like this: auto numbers3 = [ 1, 2, 3, 4], []; The second line has the same problem, as well as it's improperly declared. It should be declared as int[][].
Apr 18 2008
Gide Nwawudu wrote:Thanks, maybe I've been (ab)using auto too much. GideNo you haven't; that's a perfectly clear use of auto. It's a language issue that needs to be addressed.
Apr 18 2008
On Fri, 18 Apr 2008 15:40:48 -0700, Robert Fraser <fraserofthenight gmail.com> wrote:Gide Nwawudu wrote:I've added it as a bug. http://d.puremagic.com/issues/show_bug.cgi?id=2017Thanks, maybe I've been (ab)using auto too much. GideNo you haven't; that's a perfectly clear use of auto. It's a language issue that needs to be addressed.
Apr 21 2008
"Chris R. Miller" <lordSaurontheGreat gmail.com> wrote in message news:fu8hsc$71p$1 digitalmars.com...auto numbers3 = [ 1, 2, 3, 4], [];Sorry, that's entirely wrong. First, he wants an int[]. Second, this is just using the comma operator. It would assign [] into numbers3 (if it compiled, which I don't know).
Apr 18 2008