Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
June 23, 2004 dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
--[test.d]--
struct A {
uint c[5] = [
0,
1,
2,
3,
4
];
void reset()
{
c = c.init;
}
}
D:\D\src\build>dmd test.d
Assertion failure: '0' on line 263 in file 'init.c'
abnormal program termination
Regan
--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
|
June 26, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | It's not valid to use an array initializer in an expression; a correct message is now issued. |
June 27, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Sat, 26 Jun 2004 13:09:18 -0700, Walter <newshound@digitalmars.com> wrote: > It's not valid to use an array initializer in an expression; a correct > message is now issued. What is the correct way to re-initialise an array? uint c[5] = [0,1,2,3,4]; c[] = c.init; ? Regan -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
June 27, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | On Sun, 27 Jun 2004 17:16:43 +1200, Regan Heath <regan@netwin.co.nz> wrote: > On Sat, 26 Jun 2004 13:09:18 -0700, Walter <newshound@digitalmars.com> wrote: > >> It's not valid to use an array initializer in an expression; a correct >> message is now issued. > > What is the correct way to re-initialise an array? > > uint c[5] = [0,1,2,3,4]; > > c[] = c.init; > > ? > > Regan > Or maybe foreach(inout uint u; c) u = u.init; if so, it would be nice if there was a shorthand way, like c[] = c[].init or something. Regan -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
June 27, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | The way right now to do it is create a static version of the array initializer, then copy it into the arrays you want to reset. "Regan Heath" <regan@netwin.co.nz> wrote in message news:opr98mp6mv5a2sq9@digitalmars.com... > On Sun, 27 Jun 2004 17:16:43 +1200, Regan Heath <regan@netwin.co.nz> wrote: > > > On Sat, 26 Jun 2004 13:09:18 -0700, Walter <newshound@digitalmars.com> wrote: > > > >> It's not valid to use an array initializer in an expression; a correct message is now issued. > > > > What is the correct way to re-initialise an array? > > > > uint c[5] = [0,1,2,3,4]; > > > > c[] = c.init; > > > > ? > > > > Regan > > > > Or maybe > > foreach(inout uint u; c) > u = u.init; > > if so, it would be nice if there was a shorthand way, like > > c[] = c[].init > > or something. > > Regan > > -- > Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
June 27, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Sun, 27 Jun 2004 11:13:24 -0700, Walter <newshound@digitalmars.com> wrote: > The way right now to do it is create a static version of the array > initializer, then copy it into the arrays you want to reset. Ok, so what is the point of the arrays' .init property then? Regan > "Regan Heath" <regan@netwin.co.nz> wrote in message > news:opr98mp6mv5a2sq9@digitalmars.com... >> On Sun, 27 Jun 2004 17:16:43 +1200, Regan Heath <regan@netwin.co.nz> > wrote: >> >> > On Sat, 26 Jun 2004 13:09:18 -0700, Walter <newshound@digitalmars.com> >> > wrote: >> > >> >> It's not valid to use an array initializer in an expression; a >> correct >> >> message is now issued. >> > >> > What is the correct way to re-initialise an array? >> > >> > uint c[5] = [0,1,2,3,4]; >> > >> > c[] = c.init; >> > >> > ? >> > >> > Regan >> > >> >> Or maybe >> >> foreach(inout uint u; c) >> u = u.init; >> >> if so, it would be nice if there was a shorthand way, like >> >> c[] = c[].init >> >> or something. >> >> Regan >> >> -- >> Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ > > -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
June 28, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | "Regan Heath" <regan@netwin.co.nz> wrote in message news:opr99vd3pd5a2sq9@digitalmars.com... > On Sun, 27 Jun 2004 11:13:24 -0700, Walter <newshound@digitalmars.com> wrote: > > The way right now to do it is create a static version of the array initializer, then copy it into the arrays you want to reset. > > Ok, so what is the point of the arrays' .init property then? It actually gives you a null value, because that is the default initializer for [] arrays. |
June 28, 2004 Re: dmd v0.92 assert | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Sun, 27 Jun 2004 21:15:10 -0700, Walter <newshound@digitalmars.com> wrote: > > "Regan Heath" <regan@netwin.co.nz> wrote in message > news:opr99vd3pd5a2sq9@digitalmars.com... >> On Sun, 27 Jun 2004 11:13:24 -0700, Walter <newshound@digitalmars.com> >> wrote: >> > The way right now to do it is create a static version of the array >> > initializer, then copy it into the arrays you want to reset. >> >> Ok, so what is the point of the arrays' .init property then? > > It actually gives you a null value, because that is the default initializer > for [] arrays. Aha! I thought so, so.. why not turn this: uint[5] c = [0,1,2,3,4]; into 2 arrays, 1 array 'c', and 1 static array which is assigned to the c's init property (instead of null), so that: c = c.init; will then re-initialise the array. For this: uint[] c; init would remain null and c = c.init; would be identical to c = null; which works doesn't it? Regan. -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
Copyright © 1999-2021 by the D Language Foundation