|
Jade also supports 'unless'.
e.g. (example from my article Feeling Jaded with Jade? Don't Be![^])
- var bob = 'woman'
unless bob == 'man'
p Bob is a not man!
would output
<p>Bob is not a man!</p>
Couple of times, I have confused myself trying to unwind what I wrote.
|
|
|
|
|
That whole "condition at the end" thing is crazy.
It's like "you thought this was crazy and wouldn't work half the time? ha! conditional!"
I hate surprises.
|
|
|
|
|
Yes, very clever, but I think sticking a ! in the conditional is easier to follow.
Just because the code works, it doesn't mean that it is good code.
|
|
|
|
|
Every today's clever code is tomorrow's WTF
--
"My software never has bugs. It just develops random features."
|
|
|
|
|
I think BASICplus has/had unless (and maybe until ), but I doubt it was used much. In my opinion, one of the shortcomings of BASIC, and its progeny, is it's plethora of keywords and built-in functions. C et al do very well with far fewer. Better to learn to do more with less.
# define unless(x) if(!(x))
Oh, what did I step in...? I pulled out my BASICplus book.
Modified IF : <statement> IF <condition>
UNLESS : <statement> UNLESS <condition>
Implied FOR Loop : <statement> FOR <variable> = <starting value> TO <ending value> [ STEP <increment> ]
FOR ... UNTIL and FOR ... WHILE : FOR <variable> = <starting value> TO <ending value> [ STEP <increment> ] WHILE | UNTIL <condition>
You'll never get very far if all you do is follow instructions.
modified 17-Jun-14 22:17pm.
|
|
|
|
|
Well, you could re-factor it to
if (CaseWeCareAbout(e.Message))
{
errorToDisplay += "\n" + e.Message;
}
...
private bool CaseWeCareAbout(string input)
{
bool weDontCare = input. StartsWith("Case we don't care about");
bool weCare = !weDontCare;
return weCare;
} Some time later, you'll think: wtf did I need so many lines and an extra function for such a simple task. Every beginner can understand that, but I ought to be capable to understand far more complicated things. What will others think of me writing such code?
deflinek's message is quite correct.
|
|
|
|
|
Nah, that still uses "!" which is "hard to read".
Try this:
private bool CaseWeCareAbout(string input)
{
bool weDontCare = input. StartsWith("Case we don't care about");
bool weCare = weDontCare ? false : true;
return weCare;
}
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
If ! is hard to read then make it more obvious
private bool CaseWeCareAbout(string input)
{
return !!!!!!!!!!!input.StartsWith("Case we don't care about");
}
|
|
|
|
|
Of course, a normal exclamation mark ought to be "closed" with an inverted exclamation mark, i.e.
return !!!!!!!!!!!input.StartsWith("Case we don't care about")¡¡¡¡¡¡¡¡¡¡¡;
|
|
|
|
|
If you find it nice!
The compiler understood either way, so do human!
|
|
|
|
|
This was at the top of the code:
#define 300 1
#define 100 0
I'm amazed that the compiler even accepted it!
"State acheived after eating too many chocolate-covered coconut bars - bountiful"
Chris C-B
|
|
|
|
|
|
|
No problem with the compiler, but that code should give a one-way ticket to the developer...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
Kornfeld Eliyahu Peter wrote: that code should give a one-way ticket to the developer...
He's gone!
... but that means someone else has to sort it out!
"State acheived after eating too many chocolate-covered coconut bars - bountiful"
Chris C-B
|
|
|
|
|
It shouldn't take more than one block of chocolate to you
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
If only consumption of chocolate would fix that code!
"State acheived after eating too many chocolate-covered coconut bars - bountiful"
Chris C-B
|
|
|
|
|
Well, the good news is it wasn't hidden away in a header file...
If it's any consolation, A FORTRAN compiler I used to work with years, and years ago would accept a constant value as a function parameter, and let you change it at run time.
I can't remember FORTRAN syntax any more but it would be similar to:
void MyMethod (ref int i)
{
i = 666;
}
...
Console.WriteLine(42);
MyMethod(42);
Console.WriteLine(42);
Would happily print:
42
666
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
You surely meant to write
void MyMethod (const int i)
{
i = 666;
}
The console is a black place
|
|
|
|
|
No, that implies the wrong thing.
The compiler stored all it's constant values in memory locations, so it could happily pass a reference (or more accurately in those days a machine code pointer) to a constant value and it would act like a variable.
Total PITA to debug when you met it for the first time: and a hanging offence to leave in production code...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Changing the value of a literal for subsequent uses of the same literal is pure evil. Who could have ever thought, it was a good idea to implement constants that way? Was it possibly done to keep the image size of the executable small?
The good thing about pessimism is, that you are always either right or pleasently surprised.
|
|
|
|
|
Probably - everything was kept small in those days: we didn't have anywhere near as much disk space as you do cache!
If I remember rightly, it was a GEC4070[^] - so the main memory would have been 512Kb - and a dozen users using it...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Geez, I have never actually seen an example of this, but our Fortran and Data Structures instructor mentioned it once on a really old version of Fortran IV.
"Seize the day" - Horace
"It's not what he doesn't know that scares me; it's what he knows for sure that just ain't so!" - Will Rogers, said by him about Herbert Hoover
|
|
|
|
|
You're just trying to make me feel old, aren't you?
Well it won't work, I tell you!
I have a wife who has that job covered...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
OriginalGriff wrote: I can't remember FORTRAN syntax any more Getting old?!
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|