本文翻译自:Ternary operation in CoffeeScript

I need to set value to a that depends on a condition. 我需要设置值, a是取决于一个条件。

What is the shortest way to do this with CoffeeScript? 使用CoffeeScript执行此操作的最短方法是什么?

Eg this is how I'd do it in JavaScript: 这就是我在JavaScript中的表现:

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10

#1楼

参考:https://stackoom.com/question/gZSS/CoffeeScript中的三元操作


#2楼

Since everything is an expression, and thus results in a value, you can just use if/else . 由于一切都是表达式,因此产生一个值,你可以使用if/else

a = if true then 5 else 10
a = if false then 5 else 10

You can see more about expression examples here . 您可以在此处查看更多关于表达式示例


#3楼

a = if true then 5 else 10
a = if false then 5 else 10

See documentation . 见文档 。


#4楼

In almost any language this should work instead: 在几乎任何语言中,这应该起作用:

a = true  && 5 || 10
a = false && 5 || 10

#5楼

You may also write it in two statements if it mostly is true use: 如果它主要是真的使用,你也可以用两个语句写它:

a = 5
a = 10 if false

Or use a switch statement if you need more possibilities: 如果您需要更多可能性,请使用switch语句:

a = switch xwhen true then 5when false then 10

With a boolean it may be oversized but i find it very readable. 使用布尔值可能超大但我发现它非常易读。


#6楼

Coffeescript doesn't support javascript ternary operator. Coffeescript 不支持 javascript三元运算符。 Here is the reason from the coffeescript author : 以下是coffeescript作者的原因:

I love ternary operators just as much as the next guy (probably a bit more, actually), but the syntax isn't what makes them good -- they're great because they can fit an if/else on a single line as an expression. 我喜欢三元运算符和下一个运算符一样多(实际上可能更多),但语法并不能使它们变得更好 - 它们很棒,因为它们可以将if / else放在一行上作为一个表达。

Their syntax is just another bit of mystifying magic to memorize, with no analogue to anything else in the language. 他们的语法只是记忆中另一种神秘的魔法,与语言中的任何其他东西都不相似。 The result being equal, I'd much rather have if/elses always look the same (and always be compiled into an expression). 结果是相同的,我更倾向于if/elses总是看起来一样(并且总是被编译成表达式)。

So, in CoffeeScript, even multi-line ifs will compile into ternaries when appropriate, as will if statements without an else clause: 因此,在CoffeeScript中,即使是多行ifs也会在适当的时候编译为三元组,if if语句也没有else子句:

 if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book() 

Both become ternaries, both can be used as expressions. 两者都成为三元,都可以用作表达。 It's consistent, and there's no new syntax to learn. 它是一致的,没有新的语法可供学习。 So, thanks for the suggestion, but I'm closing this ticket as "wontfix". 所以,谢谢你的建议,但我关闭这张票是“wontfix”。

Please refer to the github issue: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802 请参考github问题: https : //github.com/jashkenas/coffeescript/issues/11#issuecomment-97802

CoffeeScript中的三元操作相关推荐

  1. 三元操作 三元操作符 if-else / ? :

    Python 三元操作符 if-else , 其他语言三元操操作符 ? : :"三元操作"语句,她也就是一个表达式. [学习的细节是欢悦的历程] Python 官网:https:/ ...

  2. bool python 运算_python中的布尔操作

    点击以下链接可以快速访问全部我发表的Python相关文章: Nick WU:Nick WU的python文章目录(持续更新中...)​zhuanlan.zhihu.com 1. Python中的布尔值 ...

  3. lua语言和python_[动态语言]python和lua中的三元操作符and-or

    在这两种语言中,表达式a and b的返回值不是true或false,而是a/b当中非真的值,而表示a or b返回的是a/b当中为真的那个. 因此,要想模拟C/C++中的三元操作符c ? a : b ...

  4. linux shell 三元运算符,语法 - Bash中的三元运算符(?:)

    语法 - Bash中的三元运算符(?:) 有没有办法做这样的事情 int a = (b == 5) ? c : d; 用Bash? 14个解决方案 346 votes ternary operator ...

  5. JavaScript中的骚操作

    JavaScript中的骚操作--记录自用 JavaScript中的骚操作 数组去重 数组转化为对象(Array to Object) 活用三元表达式 转换为数字类型(Convert to Numbe ...

  6. linux shell 三元运算符,关于语法:Bash中的三元运算符(?:)

    有什么办法可以做这种事吗 int a = (b == 5) ? c : d; 使用BASH? @荷兰语的答案表明,bash确实有类似于"三元运算符"的东西,但是在bash中,这被称 ...

  7. Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)

    Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况) #仿真数据 import pandas as pd import numpy a ...

  8. java8 流操作_java8中的流操作

    Stream 流是 Java 8 新提供给开发者的一组操作集合的 API,将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选.排序.聚合等.元素流在管道中经过 ...

  9. SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -

    SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 - 收到用户报错说,他执行MIR7做预制发票的时候,SAP弹出如下框框: 登陆SAP,左键单击如下图 ...

最新文章

  1. day16-筛选器以及Tab菜单示例
  2. Spring Security Architecture--官方
  3. chrome jsp 显示不正常_JSP程序在chrome下不兼容的问题!
  4. unc 隐藏共享文件夹_你真的了解任务栏吗?win10任务栏居然隐藏了这么多小窍门...
  5. 天线越大越好吗_无线路由知识误区!解读天线数量与信号强弱的关系
  6. (寻找第K小的数amp;amp;寻找第K小的数的和)
  7. 序列每天从0开始_序列化、反序列化原理和Protobuf实现机制
  8. 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达
  9. VFP DownFileX下载异常问题
  10. mysql触发器更新自己表_mysql触发器实例:更新表数据之前触发
  11. 计量经济学及Stata应用 陈强 第七章异方差习题7.2
  12. team explorer_Team Explorer 2017独立安装程序的退还
  13. 光环五正在连接服务器,五亿美元打水漂了?追了这么久的光环系列,玩家根本没法看...
  14. win10用户和计算机,对于电脑工作者们,更喜欢用win7还是win10呢?
  15. 【本科生科研入门】英文科技论文写作-绘图篇
  16. LaTex练习日记02 —— 字体设置
  17. electron的单元测试(基于mocha+chai+karma)
  18. Java基础查漏补缺(个人向)
  19. cad输入法自动切换_银河麒麟操作系统用户教程(八):如何设置输入法?
  20. AD中出现off grid pin问题的解决方法

热门文章

  1. ES6解构赋值原理详解
  2. 嵌入式系统TinyOS学习资源
  3. 错误3:系统找不到指定的路径
  4. android,PHP解析JSON数组,JSONArray,JSONOject,乱码
  5. 最近在整理和准备发布
  6. Navicat实用功能:数据备份与结构同步
  7. Android 应用资源及R文件的位置
  8. Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
  9. 201521123035《Java程序设计》第十周实验总结
  10. Windows下安装Elasticsearch