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.

Reply via email to