問題の多くがここにあります
- は、あなたがそのような
a = if b then c else d
としてワンライナーを使用しているとき、あなたはの複数行の形式を使用している場合のみ、then
を使用しますif
then
を使用しないでください。
- 複数の
else
ブランチがあります。else if
です。
&
と&&
は異なるものですが、&
はビット単位の演算子です。&&
はあなたが探している論理積です。
- あなたは、あなたの押し込みに非常に注意し、一貫している必要があります。あなたのコードにそれらの調整を適用する
あなたが得る:
for set in datasets
line.push
data: set,
lines:
show: true
fill: true
opacity: 0.7
fillColor: if lastVisibilty == 0 && curr_visibility == 0
"#C90E30"
else if lastVisibilty == 0 && curr_visibility == 1
"#439C32"
else if lastVisibilty == 1 && curr_visibility == 0
"#C90E30"
else
"#439C32"
しかし、あなたのループ内の条件付きロジックがset
に依存しない(すなわち、ループ不変である)ので、あなたはそれを考慮する必要があります。
:
fillColor = if lastVisibilty == 0 && curr_visibility == 0
"#C90E30"
else if lastVisibilty == 0 && curr_visibility == 1
"#439C32"
else if lastVisibilty == 1 && curr_visibility == 0
"#C90E30"
else
"#439C32"
for set in datasets
line.push
data: set,
lines:
show: true
fill: true
opacity: 0.7
fillColor: fillColor
またはそれ以上は、さらにコードを明確にするために、ループの外のすべての不変のものをプッシュします
または、forループ式であることから、あなたが言うことができる:
fillColor = if lastVisibilty == 0 && curr_visibility == 0
"#C90E30"
else if lastVisibilty == 0 && curr_visibility == 1
"#439C32"
else if lastVisibilty == 1 && curr_visibility == 0
"#C90E30"
else
"#439C32"
lines =
show: true
fill: true
opacity: 0.7
fillColor: fillColor
line = ({ data: set, lines: line } for set in datasets)
はline
はもちろん、あなたのループの前に空であると仮定すると、 line
にループのデータを追加する
line = line.concat({data: set, lines: line } for set in datasets)
:そうでない場合、あなたはArray.prototype.concat
を使用することができます。
私の元のforループの外側にfillColor:if条件文を追加しました。しかし、私は現在、条件の1つに対してcurr_visibility varによって引き起こされた新しい問題を抱えています。私はそれを別の質問で掲示します。 – jcbridwe