|
From: sfeam <sf...@us...> - 2017-10-15 18:09:03
|
On Sunday, 15 October 2017 10:19:11 Achim Gratz wrote:
> Achim Gratz writes:
> > Ethan A Merritt via gnuplot-beta writes:
> >>> Also, why is there no block "else if" or maybe even "elsif"?
> >>
> >> No particular reason.
> >> So far as I can see, all it would gain is to reduce the number of
> >> required curly brackets by one pair.
> >> Is there something more subtle I'm missing?
> >
> > Maybe. If the conditional expressions themselve need to be nested, you
> > will either end up with unwieldy formatting
> >
> > if (…) {
> > else {
> > if (…) {
> > else {
> > if (…) {
> > else {
> > if (…) {
> > else {
> > if (…) {
> > else {
> > if (…) {
> >
> > or you'll need to explicitly repeat (and revert) the logical expression
> > from the former branches.
>
[snip]
> Example for that latter point:
> So with that hypothetical elsif keyword, things would look a lot saner
> and be less error-prone, I think:
>
> --8<---------------cut here---------------start------------->8---
> if (days <= 1/24.) {
> set xtics 15/60.
> set mxtics 3
> } elsif (days <= 4/24.) {
> set xtics 1
> set mxtics 12
> } elsif (days <= 2) {
> set xtics 1
> set mxtics 4
> } elsif (days <= 2) {
> set xtics 2
> set mxtics 8
> } elsif (days <= 6) {
> set xtics 6
> set mxtics 12
> } elsif (days <= 13) {
> set xtics 12
> set mxtics 12
> } elsif (days <= 27) {
> set xtics 24
> set mxtics 8
> } elsif (days <= 41) {
> set xtics 24
> set mxtics 4
> } else {
> set xtics 7*24
> set mxtics 14
> }
> --8A<---------------cut here---------------end--------------->8---
There are other possibilities using the existing syntax elements.
For example:
do for [i=0:0] {
if (days <= 1/24.) {
set xtics 15/60.
set mxtics 3
break
}
if (days <= 4/24.) {
set xtics 1
set mxtics 12
break
}
if (days <= 2) {
set xtics 1
set mxtics 4
break
}
if (days <= 2) {
set xtics 2
set mxtics 8
break
}
if (days <= 6) {
set xtics 6
set mxtics 12
break
}
if (days <= 13) {
set xtics 12
set mxtics 12
break
}
if (days <= 27) {
set xtics 24
set mxtics 8
break
}
if (days <= 41) {
set xtics 24
set mxtics 4
break
}
else {
set xtics 7*24
set mxtics 14
break
}
}
Essentially a switch/case construct.
Ethan
> Achim.
>
|