digitalmars.D.learn - should this work?
- BCS (21/21) Dec 29 2006 void main()
- Jarrett Billingsley (3/7) Dec 29 2006 Ugh, thankfully it doesn't. That's just plain confusing.
- Lars Ivar Igesund (7/30) Dec 29 2006 I don't think this should be allowed. To actually enter the "goodby" cas...
- BCS (11/40) Dec 29 2006 Well, assume that str could be "goodby". Say it (and i) comes from
void main() { char[] str = "hello"; int i = 5; switch(str) { case "hello": switch(i) { case "goodby": // case for outer switch in inner switch writef("foo\n"); case 1:; writef("bar\n"); } } } It doesn't because (I assume), it isn't allowed to in C/C++. However that is because C has only one type for switches, integer. D doesn't have this restriction, array types are just fine. So why not (sanity aside*) permit it? * I can think of no uses for it, but what does that matter.
Dec 29 2006
"BCS" <nothing pathlink.com> wrote in message news:en4131$29h2$1 digitaldaemon.com...It doesn't because (I assume), it isn't allowed to in C/C++. However that is because C has only one type for switches, integer. D doesn't have this restriction, array types are just fine. So why not (sanity aside*) permit it?Ugh, thankfully it doesn't. That's just plain confusing.
Dec 29 2006
BCS wrote:void main() { char[] str = "hello"; int i = 5; switch(str) { case "hello": switch(i) { case "goodby": // case for outer switch in inner switch writef("foo\n"); case 1:; writef("bar\n"); } } } It doesn't because (I assume), it isn't allowed to in C/C++. However that is because C has only one type for switches, integer. D doesn't have this restriction, array types are just fine. So why not (sanity aside*) permit it? * I can think of no uses for it, but what does that matter.I don't think this should be allowed. To actually enter the "goodby" case, str will have to be changed after case "hello" has been entered. -- Lars Ivar Igesund blog at http://larsivi.net DSource & #D: larsivi
Dec 29 2006
Lars Ivar Igesund wrote:BCS wrote:Well, assume that str could be "goodby". Say it (and i) comes from somewhere else. the result would be: str i output ----------------------- hello 1 "bar\n" hello !1 error: no default goodby any "foo\nbar\n" It's all moot because it doesn't work and, IMHO, goes along with the duff's device into the category of "things that you probably shouldn't do". :bvoid main() { char[] str = "hello"; int i = 5; switch(str) { case "hello": switch(i) { case "goodby": // case for outer switch in inner switch writef("foo\n"); case 1:; writef("bar\n"); } } } It doesn't because (I assume), it isn't allowed to in C/C++. However that is because C has only one type for switches, integer. D doesn't have this restriction, array types are just fine. So why not (sanity aside*) permit it? * I can think of no uses for it, but what does that matter.I don't think this should be allowed. To actually enter the "goodby" case, str will have to be changed after case "hello" has been entered.
Dec 29 2006