for语句的Coffeescript语法问题

gwydion93

我正在尝试使用Coffeescript设置条件,以便在图形图上为两个变量设置fillColor;lastVisibility和curr_visibility。我的语法不对劲。有什么建议

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"
亩太短

这里有很多问题:

  1. then在使用a = if b then c else d单线(例如)时使用,如果您使用的多行形式,if则不使用then
  2. 您的else意思是有多个分支else if
  3. &并且&&是不同的东西,&是按位运算符,&&是您要寻找的逻辑合取。
  4. 您需要非常小心并与您的缩进一致。

将这些调整应用于您的代码,您将得到:

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

或者更好的方法是,将所有不变的内容推入循环之外,以进一步阐明代码:

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)

假设line在循环之前是空的;如果不是,那么您可以使用Array.prototype.concat

line = line.concat({data: set, lines: line } for set in datasets)

将循环的数据附加到line

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell IF语句语法问题

来自分类Dev

awk语句的语法问题

来自分类Dev

Javascript傻问题:if语句语法

来自分类Dev

意外的语句开头 - 语法问题?

来自分类Dev

SQL语句中的语法错误问题

来自分类Dev

PHP类中的if else语句语法问题

来自分类Dev

PHP语法问题-if语句后跟foreach循环

来自分类Dev

Python if语句语法错误问题

来自分类Dev

Java Mysql预准备语句语法问题

来自分类Dev

摩卡-coffeescript语法

来自分类Dev

使用@init语句导入语法时出现问题

来自分类Dev

我无法通过语句弄清楚语法问题

来自分类Dev

我无法通过语句弄清楚语法问题

来自分类Dev

Coffeescript的IF语句中的多个OR

来自分类Dev

Angular Coffeescript语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

CoffeeScript函数编译问题

来自分类Dev

Coffeescript“点击”问题

来自分类Dev

理论Coffeescript转换语句难题

来自分类Dev

if语句语法-与教导的语法不同

来自分类Dev

if语句问题

来自分类Dev

语法问题?在neo4j cypher语句中将对象作为参数传递

来自分类Dev

此ANTLR语法有什么问题?条件语句嵌套括号

来自分类Dev

使用JDBC和预准备语句时出现SQL语法问题

来自分类Dev

使用 if/then 语句的问题:`((: == : 语法错误:预期操作数(错误标记为“==”)`

来自分类Dev

Neo4j 的这个 create 语句语法有什么问题?

来自分类Dev

带有准备好的语句语法问题的 SQL UPDATE 查询,没有错误消息

来自分类Dev

Coffeescript缩进有问题