当前位置: 首页 > 知识库问答 >
问题:

如何优雅地将守护声明与条件结合起来?

江洲
2023-03-14

我目前有警卫声明:

 guard let designationQuota = Defaults.quotas.value?.designationQuota, designationQuota > 0 else {
      return AppDelegate.shared.presentNoDesignationQuotaWarning()
 }

但是,我只想在变量需要Quota ==true时执行保护块。我想跳过保护语句,如果需要Quota ==假。有没有比带有返回的if语句更好的方法来做到这一点?

编辑:

如何将其简化为单个防护装置?

if needsQuota {
  guard let designationQuota = Defaults.quotas.value?.designationQuota, designationQuota > 0 else {
      return AppDelegate.shared.presentNoDesignationQuotaWarning()
   }
}

共有3个答案

茅炯
2023-03-14

这不是很有用吗?

guard needsQuota, let designationQuota = Defaults.quotas.value?.designationQuota, designationQuota > 0 else {
    return AppDelegate.shared.presentNoDesignationQuotaWarning()
}
呼延靖
2023-03-14

问题是,如果条件失败或guard失败,您希望以不同的方式继续执行,因此您无法真正将它们组合成单个 。但是,您可以将这两个条件组合成一个 if语句,方法是将您的 保护condition的否定版本放在 语句中。

if needsQuota && (Defaults.quotas.value?.designationQuota ?? 0 <= 0) {
    return AppDelegate.shared.presentNoDesignationQuotaWarning()
}

陶泳
2023-03-14

怎么样:

guard !needsQuota ||
    (Defaults.quotas.value?.designationQuota.map { $0 > 0 } == true) else {
    return AppDelegate.shared.presentNoDesignationQuotaWarning()
}
 类似资料:
  • 我需要结合两个反应性出版商的结果——Mono和Flux。我尝试使用和函数来实现这一点,但我无法满足两个特定条件: 结果包含的元素应与通量发射的元素一样多,但相应的Mono源只应调用一次(仅此条件可通过实现) 当通量为空时,链应在不等待单一元素的情况下完成 第一个条件的解决方案出现在结合单声道和通量条目中(粘贴在下面)。但是我无法在不阻塞链的情况下实现第二个条件——这是我想避免的。

  • 我想在React项目的后端合并一个使用语音识别的Python文件。 这里我有一段使用语音识别的Python代码: 我尝试在react组件中导入文件,如下所示: 在这里,我尝试将我的按钮链接到Python文件中的函数: 我收到了它未能编译的消息以及以下内容: 我能做些什么来使这个工作?

  • 问题内容: 我创建了一个.NET Core控制台应用程序,该应用程序在Ubuntu 14.04计算机上作为守护程序运行。 我想停止服务而不强制它,因为它能够处理kill事件。 我该如何实现? 问题答案: 您希望能够将 SIGTERM 发送到正在运行的进程: 并且该进程应处理它以正确关闭。 不幸的是, .NET Core的 文档不完善,但是它能够处理Unix信号(与 Mono的 方式不同)。GitH

  • 人生太短,不能写没人会读的废话,如果你写了废话,没人会去读。所以好一点的文档是最好的。经理不会去理解这些东西,因为不好的文档会给他们错误的安全感以至于他们不敢依赖他们的程序员。如果一些人绝对坚持你真的在写没用的文档,就告诉他们“是的”,然后安静的找一份更好的工作。 没有其他事情比精确估计 把好的文档转为放松文档要求的估计 更为有效率。真相是冷酷而艰难的:文档,就像测试,会花比开发代码多几倍的时间。

  • 我使用https://doc.akka.io/docs/alpakka-kafka/current/consumer.html从kafka使用数据,如下所示: 接下来,我将通过akka http websocket客户端将收到的结果转发到webserver 以下是如何构建websocket客户端: 我有两个问题: > 如何将消费者和websocket客户端组合成一个流,并让它将消息发送到Web服务

  • 为了能够轻松地测试我的SOAP客户机(通过利用MockWebServiceServer),我想使用Spring的WebServiceTemplate。 SOAPendpoint是.NET服务器。基于wsdl,我能够生成bean(主要是请求类)和endpoint接口。 生成的界面如下: SOAPFaultClientException:反序列化操作“CallCheckXML”的请求消息正文时出错。O