If statement for语句的Coffeescript语法问题
使用Coffeescript,我试图为两个变量在图形上设置fillColor设置条件;上次可见性和当前可见性。我的语法有点不正确。有什么建议吗If statement for语句的Coffeescript语法问题,if-statement,coffeescript,conditional,If Statement,Coffeescript,Conditional,使用Coffeescript,我试图为两个变量在图形上设置fillColor设置条件;上次可见性和当前可见性。我的语法有点不正确。有什么建议吗 for set in datasets line.push data: set, lines: show: true fill: true opac
for set in datasets
line.push
data: set,
lines:
show: true
fill: true
opacity: 0.7
fillColor: if lastVisibilty == 0 & curr_visibility == 0
then "#C90E30"
else lastVisibilty == 0 & curr_visibility == 1
then "#439C32"
else lastVisibilty == 1 & curr_visibility == 0
then "#C90E30"
else
"#439C32"
这里有很多问题:
a=if b然后c else d
,您仅使用then
,如果您使用多行形式的if
,则不使用then
selse
分支,您的意思是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"
但是,循环内的条件逻辑不依赖于集
(即循环不变),因此应将其考虑在内:
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
或者更好,将所有不变的东西推到循环之外,以进一步澄清代码:
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
for set in datasets
line.push
data: set,
lines: lines
或者,由于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)
当然,假设在循环之前,行
是空的;如果不是,则可以使用:
要将循环的数据附加到
行
中,您的答案非常正确,我在原始for循环之外添加了fillColor:if条件语句。但是,我现在遇到了一个新问题,它是由其中一个条件的curr_可见性变量引起的。我将在另一个问题中发布。
line = line.concat({data: set, lines: line } for set in datasets)