How initialize a static rectangular array (2-d matrix)
I almost have to apologize for this question but .. How does one initialize a static rectangular array (2-d matrix) in D1? None of the following or other variations that I've tried compile with DMD 1.0. int[2, 3] matrix = [ 1, 2, 3, 4, 5, 6 ]; int[2, 3] matrix = [[ 1, 2, 3 ], [ 4, 5, 6 ]]; Thanks for all help.
Re: How initialize a static rectangular array (2-d matrix)
Jarrett Billingsley Wrote: On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote: I almost have to apologize for this question but .. How does one initialize a static rectangular array (2-d matrix) in D1? None of the following or other variations that I've tried compile with DMD 1.0. int[2, 3] matrix = [ 1, 2, 3, 4, 5, 6 ]; ..that's not how you declare a rectangular array type. It's int[3][2]. int[3][2] matrix = [[1, 2, 3], [4, 5, 6]]; Of course. Blonde moment. Worked 18 hrs yesterday not enough sleep. :-(
Re: How initialize a static rectangular array (2-d matrix)
Jarrett Billingsley Wrote: On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote: I almost have to apologize for this question but .. How does one initialize a static rectangular array (2-d matrix) in D1? None of the following or other variations that I've tried compile with DMD 1.0. int[2, 3] matrix = [ 1, 2, 3, 4, 5, 6 ]; ..that's not how you declare a rectangular array type. It's int[3][2]. int[3][2] matrix = [[1, 2, 3], [4, 5, 6]]; Thanks Jarrett. Am I having a blonde day? int[2,3] m = [ 1, 2, 3 ]; writefln( m=%s, .sizeof=%d, m, m.sizeof); Compiles and prints: m=[1,2,3], .sizeof=12 So what does that declaration, int[2,3], mean? Think this is what threw me initially. Thanks, Justin
Re: How initialize a static rectangular array (2-d matrix)
Justin Johansson wrote: Jarrett Billingsley Wrote: On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote: I almost have to apologize for this question but .. How does one initialize a static rectangular array (2-d matrix) in D1? None of the following or other variations that I've tried compile with DMD 1.0. int[2, 3] matrix = [ 1, 2, 3, 4, 5, 6 ]; ..that's not how you declare a rectangular array type. It's int[3][2]. int[3][2] matrix = [[1, 2, 3], [4, 5, 6]]; Thanks Jarrett. Am I having a blonde day? int[2,3] m = [ 1, 2, 3 ]; writefln( m=%s, .sizeof=%d, m, m.sizeof); Compiles and prints: m=[1,2,3], .sizeof=12 So what does that declaration, int[2,3], mean? Think this is what threw me initially. Thanks, Justin 2,3 is a comma expression. Evaluate everything, and return the rightmost value.
Re: How initialize a static rectangular array (2-d matrix)
Justin Johansson wrote: Jarrett Billingsley Wrote: On Thu, Oct 8, 2009 at 8:10 PM, Justin Johansson n...@spam.com wrote: Thanks Jarrett. Am I having a blonde day? int[2,3] m = [ 1, 2, 3 ]; writefln( m=%s, .sizeof=%d, m, m.sizeof); Compiles and prints: m=[1,2,3], .sizeof=12 So what does that declaration, int[2,3], mean? Think this is what threw me initially. Thanks, Justin It probably means DMD isn't doing enough validation checking. Comma expression, hence typeof(m) is int[3], m.sizeof is 3 * int.sizeof
Re: How initialize a static rectangular array (2-d matrix)
Jarrett Billingsley Wrote: Bahahaha, oh comma exps. Their usage will need to be quite regulated in D (using them for smarter purposes is a cute idea, but it may impair C compatibility). Bye, bearophile