On Wednesday, 29 June 2016 at 17:00:49 UTC, Guido wrote:
On Wednesday, 29 June 2016 at 15:40:57 UTC, Andrea Fontana
wrote:
On Wednesday, 29 June 2016 at 15:33:58 UTC, Guido wrote:
The problem is actually much more profound. The classes need
to be declared outside the main() scope. WTF?!?!?!
I put them in main() so they would be in scope. This seems
like a *MAJOR* design flaw with the language, not to mention
the compiler not giving useful feedback. This decision, if it
is a decision, makes no sense given all the attention to
scoping rules.
I'm not interested in trading one set of bad language
decisions for another. Can someone fix this?
I wonder which language you usually use in your programming
experience.
C++
I have all this business generally working in C++. I just
wanted to try D for a production level quick project. So, the
language is not ready. I'm really sad about this. I had hoped
that I could get some useful work done. C++ is painfully slow
to write & debug, but what can you do.
As I said, why exchange one set of bad design decisions for
another?
On another topic, tuples seem to have a major problem as well.
Tuple!(float, float, float) test;
Tuple!(float, float, float) [] array_data;
test[0] = 1.0; // works
array_data[i][0] = 1.0; // doesn't work. Compile-time error,
Why don't you give at least the compiler error and the full code ?
If you don't want to publish your actual code, create a very
small program reproducing the problem and show that to us.
I understand your frustration, but understand that there are many
people here that volunteer to help you. You have to provide them
sufficient info for this to work.
Tuple!(float, float, float) [] array_data;
This declares a dynamic array that is initially empty
(array_data.length == 0).
Accessing the i'th item can't work.
I'm a bit surprised the compiler would detect this problem
because it is usually a run time error. So I suspect there are
other problems with your code.
You could also have written
array_data ~= test;
which appends the value test to the dynamic array that will then
contain one element. You could then have written
array_data[0][0] = 2.0;
Or you could also have written
Tuple!(float, float, float) [10] array_data;
which would have declared array_data as a fixed sized array of 10
tuples.
In this case writing
array_data[1][0] = 1.0;
would have worked.
D is an excellent and mature language. Every language has its
rules that needs to be learn.
Claiming the problems you encountered are due to bad design of
the language is unfair if you don't expose clearly the problem
and verify the problem is not your side. There is a deeply
thought rationale for every rule of the D language.
If you don't understand the rationale or want to contest the
choice of rules, then expose your point and arguments. People
will helpfully answer you.
I did it myself and was always impressed by the quality of the
responses and positive and helpful attitude of people in this
forum.