咖啡脚本中的 switch case 语句

2023-12-21

我有几个不同的按钮调用相同的函数,我希望将它们包装在 switch 语句中,而不是使用一堆 else if 条件。任何帮助都会很棒!

events:
"click .red, .blue, #black, #yellow" : "openOverlay"

openOverlay: (e) ->
  e.preventDefault()
  e.stopPropagation()

target = $(e.currentTarget)

# the view should be opened
view = 
  if target.hasClass 'red' then new App.RedView
  else if target.hasClass 'blue' then new App.BlueView
  else if target.is '#black' then new App.BlackView
  else
    null

# Open the view
App.router.overlays.add view: view if view?

有两种形式switch http://coffeescript.org/#switch在咖啡脚本中:

switch expr
    when expr1 then ...
    when expr2 then ...
    ...
    else ...

and:

switch
    when expr1 then ...
    when expr2 then ...
    ...
    else ...

第二种形式可能会帮助您:

view = switch
  when target.hasClass 'red' then new App.RedView
  when target.hasClass 'blue' then new App.BlueView
  when target.is '#black' then new App.BlackView
  else null

你可以省略else null if undefined是一个可接受的值view。您还可以将逻辑包装在(显式)函数中:

viewFor = (target) ->
    # There are lots of ways to do this...
    return new App.RedView   if(target.hasClass 'red')
    return new App.BlueView  if(target.hasClass 'blue')
    return new App.BlackView if(target.is '#black')
    null

view = viewFor target

为您的逻辑命名(即将其包装在函数中)通常对于澄清您的代码很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

咖啡脚本中的 switch case 语句 的相关文章

  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • if 子句中的多个条件

    如果我有一个 if 语句需要满足这些要求 if cave gt 0 training gt 0 mobility gt 0 sleep gt 0 有没有办法说它们都大于零 只是为了更高效的 DRY 代码 就像是 if cave traini
  • R中具有特定条件的多列变异

    我有这个数据 M1 M2 M3 UCL 1 2 3 1 5 我想在这种情况下创建新列 如果M1大于UCL MM1将为 UP 否则为 NULL 如果M2大于UCL MM2将为 UP 否则为 NULL 如果M3大于UCL MM3将为 UP 否则
  • MySQL查看数据是否为NULL

    我需要在 Select 中放置一个 Case 来检查我添加到视图中的数据是否为 NULL 在这种情况下我希望它只输入零 或者不输入零 你的意思是这样的吗 SELECT IF field IS NULL 0 field 还有 IFNULL S
  • Gitlab-CI:有条件的allow_failure

    我最近开始为我的代码实现自动测试 我注意到 CI 没有捕获编译器的警告 即使有警告 测试也显示为成功 我最初为编译器添加了一个标志 将警告转化为错误allow failure True 但问题是编译器在第一个警告 gt 错误时停止 并没有完
  • 如何在 ifelse 中使用示例

    我有以下清单 x rep a 100 如果我使用下表 ifelse x a sample c 1 100 1 0 当我第一次运行时 我得到以下输出 1 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
  • Ruby 2.0 中的 procs 可以与 case 语句一起使用吗?

    我记得一些关于允许进入的事情caseRuby 2 0 中的语句 但我无法用 google 搜索它 我尝试检查Ruby 2 0 0 新闻 https github com ruby ruby blob ruby 2 0 0 NEWS and
  • Coffeescript 中的源映射 - 错误未映射到源

    我刚刚意识到源映射 一个期待已久的功能 令我印象深刻的是 这么多人聚集在一起 让咖啡脚本 浏览器 kickstart 项目等 实现这一目标 我设置了一个小测试 所以我可以了解如何使用它 咖啡脚本 注意 这里有一个故意的错误 因为y没有定义
  • 编译器对开关的优化是否与长 if-then-else 链不同?

    假设我在编译时已知 N 个不同的积分值 V 1 到 V N 考虑以下结构 const int x foo switch x case V 1 commands for V 1 which don t change x break case
  • switch 语句中的 continue 2 和break

    我是 PHP 新手 在网上看到了下面的代码 它有continue 2 and break一起在switch case陈述 这是什么意思 foreach elements as element switch element type case
  • 时间:2019-03-17 标签:c#AlphaTelephoneNumberTranslator

    我有一个家庭作业 该程序将接受格式类似于 555 GET FOOD 的任何电话号码 任务是将字母映射到数字 并将数字翻译成其对应的数字 例如 A B C 2 D E F 3 ETC 目前我们还没有讨论类或创建地图 因此这些不是可行的解决方案
  • 为什么 switch 表达式可以从周围的上下文推断表达式类型,而其他类型不明确的表达式却不能?

    当我回答的时候这个问题 https stackoverflow com questions 63226902 unexpected results after optimizing switch case in visual studio
  • Eclipse 的 CoffeeScript 编辑器插件?

    事情是这样的 我使用 Wro4j 来处理 coffee 文件到 js 文件的转译 构建 现在我想要一个支持CoffeeScript的好的编辑器插件 并且我不想安装Aptana 我只需要CoffeeScript 不需要Python Ruby和
  • esp8266互联网交换机问题

    我正在尝试制作一个门继电器开关系统 我可以通过端口转发从任何地方进行操作 我找到了一个非常有用的指南和代码 我的程序基于 https openhomeautomation net control a lamp remotely using
  • 使用 docker for windows 工具箱切换到 Windows 容器

    我已经在 Windows 7 64 位操作系统上安装了 docker for windows toolbox 我无法使用 docker 菜单切换到 Windows 容器 因为 docker 图标在系统托盘中不可用 Docker 服务也不可用
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • if {...} else {...} :“}”和“else”之间的换行真的很重要吗?

    我写我的if else 在 R 中按以下方式声明 因为我发现它更具可读性 Testifelse function number1 if number1 gt 1 number1 lt 5 number1 1 else if number1
  • 如何从非图像的 WebSocket 读取 BLOB 数据

    我创建了一个到网络服务器的 WebSocket 连接来接收一些数据 但是 当我记录在onmessage函数 那么我就看不到数据的真实内容 当我复制 Chrome 浏览器 v32 作为curl 命令打开的网络连接并在我的操作系统控制台上运行它
  • jQuery Switch Case 插件?

    我知道 switch case 语句是 javascript 固有的 你无法更改它 我仍在学习 javascript 和 jQuery 这样我就可以过得去 但我还不够了解 无法编写一些可能达到 jQuery 本身水平的东西 所以 把这个当作

随机推荐

  • 回溯外部化

    目前我有 logback 配置文件 即logback xml这是src main resources 我想设置日志记录级别 但我想在战争之外进行控制 我能想到的一种解决方案是将其外部化在属性文件中 在服务器启动时加载它并替换占位符 有更好的
  • Opengraph W3C 有效吗?

    我想知道 opengraph 标记是否是 W3C 有效的 当我尝试验证它时 出现以下错误 Line 14 Column 17 there is no attribute PROPERTY 如果它无效 会影响我的页面排名和其他搜索引擎算法吗
  • 为什么 UIFont(descriptor:size:) 比 UIFont(name:size:) 慢 200 倍?

    最近我注意到滚动的性能正在减慢 我追踪了这个问题 发现原因是使用了由UIFont 描述符 大小 https developer apple com library ios documentation UIKit Reference UIFo
  • Numpy 通过交错连接数组

    我有 4 个数组 我想将它们连接成一个交错的数组 我该怎么做呢 gt gt gt import numpy as np gt gt gt a np tile 0 5 2 gt gt gt b np tile 1 5 2 gt gt gt c
  • 使用python查找fits文件中像素的物理坐标

    我想从 python 脚本中获取给定像素的物理天空坐标 我想使用 astropy 的 WCS 但我会在 python 中做任何事情 我已经尝试过这两段代码 from astropy io import fits from astropy w
  • 打印数组 LISP 的内容

    为什么这段代码不打印出数组的内容 defun loopfn state loop for x from 0 to 2 do loop for y from 0 to 2 do aref state x y 这里我传递了一个 3x3 矩阵 它
  • 正则表达式匹配开始和结束字符串

    这看起来应该是微不足道的 但我不太擅长正则表达式 而且这对谷歌来说似乎并不容易 我需要一个以字符串 dbo 开头的正则表达式 并以字符串 fn 结尾 就我而言 我不在乎这两个字符串之间有什么字符 只要开头和结尾正确即可 这是为了匹配 SQL
  • 为什么 LIB 文件具有如此两面性的野兽?

    我正在尝试了解 Microsoft Windows 上的 LIB 文件业务 并且我刚刚有了一个发现 我希望它能够消除迄今为止阻止我清楚掌握该问题的困惑 也就是说 LIB 文件并不是其文件扩展名所表明的那种文件 cd C Program Fi
  • 颤动错误:没有名称为“displayLarge”的命名参数

    我正在开发一个应用程序 两天前我在 git 上发布了最后一次更新 此后就没有再碰过代码 现在 我打开 android studio 当我尝试运行它时 它给了我这个错误 我尝试从计算机中删除存储库 然后再次克隆它 但它不起作用 我也尝试过寻找
  • 如何在FMX(火猴)中加载大位图

    我正在尝试创建一个需要加载的漫画查看器JPG像 1000 16000 这样的大尺寸图像 我的应用程序是在 delphi FMX 中 我已经尝试过使用TImage TImageViewer TImageControl但他们都使用TBitmap
  • Mac OS X 中的环境变量

    更新 以下链接没有完整的答案 必须在两个地方设置路径或变量 一个用于 GUI 一个用于 shell 是蹩脚的 不重复 在 OS X 中设置环境变量 https stackoverflow com questions 135688 setti
  • Powershell 根据早于 x 天的时间移动文件和文件夹

    我是 powershell 新手 正在尝试学习从一个目录到另一个目录的基本文件移动 我的目标是将超过 18 个月的文件和文件夹移动到作为计划任务运行的冷存储文件夹 我需要能够轻松修改它的目录以满足我们的需求 它需要保留文件夹结构并仅移动符合
  • 将 mongodb 返回对象转换为字典

    我将 Bottle 框架与 mongoengine 一起使用 我有一个订单模型 class OrderDetail Option orderDetailsQty FloatField def to dict self return mong
  • 对(flask-restful)GET API 调用进行单元测试时出现 500 INTERNAL SERVER ERROR

    我已经对我的 Flask restful API 模块中的所有方法进行了单元测试 现在我想通过实际进行 API 调用来测试 get 方法 我预计此测试会出现错误 400 我的资源类 class Response Resource marsh
  • WPF 本地化:使用 StringFormat 的动态资源?

    我正在使用 ResourceDictionary 在 NET 4 中进行本地化 有人有使用字符串格式的值的解决方案吗 例如 假设我有一个带有 SomeKey 键的值
  • 如何从 GameScene 中的 ViewController 调用方法

    我的 viewController 中有一个自定义 segue 的方法 如下所示 func gameOver performSegueWithIdentifier GameOver sender nil 我在 GameScene swift
  • MySQL表间自增

    在MySQL中 是否可以在两个不同的表中拥有自动递增的列 示例 table1 具有 secondaryid 列 table2 也具有 secondaryid 列 table1 secondaryid 和 table2 secondaryid
  • 以编程方式清除应用程序的数据

    我想以编程方式清除应用程序的数据 应用程序的数据可能包含数据库 共享首选项 内部 外部文件或应用程序内创建的任何其他文件等任何内容 我知道我们可以通过以下方式清除移动设备中的数据 设置 gt 应用程序 gt 管理应用程序 gt 我的应用程序
  • Angular2 ComponentRouter 防止自动组件重用[重复]

    这个问题在这里已经有答案了 文档https angular io docs ts latest guide router html https angular io docs ts latest guide router html stat
  • 咖啡脚本中的 switch case 语句

    我有几个不同的按钮调用相同的函数 我希望将它们包装在 switch 语句中 而不是使用一堆 else if 条件 任何帮助都会很棒 events click red blue black yellow openOverlay openOve