I'm porting some code from Java to D and am getting stuck on what Java calls static class fields. I can't find out how to write the functional (or best practices) equivalent in D.
(There are other syntax errors in D code, I'm fixing them one by one) ######### Begin D code (ported from Java code below, and I probably should use an Enum, but .... haven't) public class Answer { /* I've tried various combinations of syntax here */ static int CORRECT = 0; public const int WRONG = 1; private int _answerCode; private string _answerText; /* */ public this(int answerCode, string answerText) { _answerCode = answerCode; _answerText = answerText; } /* */ public int getAnswerCode() { return _answerCode; } /* */ public string getAnswerText() { return _answerText; } } ####### End D code code ####### Begin Java code (included to show how it was done in java) public class Answer { public static final int CORRECT = 0; public static final int WRONG = 1; private int _answerCode; private String _answerText; /* */ public Answer(int answerCode, String answerText) { _answerCode = answerCode; _answerText = answerText; } /* */ public int getAnswerCode() { return _answerCode; } /* */ public String getAnswerText() { return _answerText; } } ###### End Java code ######### Begin D code snippet trying to use the Answer class int asd = Answer.CORRECT; <-- compile error here try { answer = problem.getAnswer(reply); // grade answer if (answer.getAnswerCode() == Answer.CORRECT) <-- compile error here inOut.displayAnswer("Correct"); else inOut.displayAnswer("Nope, " ~ answer.getAnswerText()); } catch (Exception iae) { inOut.displayAnswer(iae.getMessage()); repeatQuestion = true; // show same question again } ######### End D code snippet