- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Swift 周围闲逛,发现 fatalError
有这个签名:
@noreturn public func fatalError(@autoclosure message: () -> String = default, file: StaticString = #file, line: UInt = #line)
关于为什么以这种方式定义此函数的任何具体原因?有什么问题:
@noreturn public func fatalError(message:String = default, file: StaticString = #file, line: UInt = #line) {
//Termination code
}
请注意,我理解@autoclosure
是如何工作的,这个问题不是关于它的用法;但是关于可以使用这种模式的用例。
最佳答案
它用于可选地评估语句以减少开销。
对于这段代码
fatalError("\(someExpansiveComputation())")
如果函数是用正常的参数传递定义的,那么 someExpansiveComputation()
将始终被调用,即使在生产构建中也是如此。
但是使用@autoclosure
,fatalError
的实现可以选择不调用闭包,避免调用someExpansiveComputation()
的开销。/p>
一个可能的实现可以是
@noreturn public func fatalError(message:String = default, file: StaticString = #file, line: UInt = #line) {
if debug || errorReportingEnabled {
log(message()) // only compute the message if necessary
}
abort()
}
关于swift - 为什么 Swift 的 fatalError 参数是 @autoclosure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37113169/
我们有一个特殊的日志记录函数来表示特定类型的崩溃,因此,它在内部调用fatalError。然而,与fatalError不同,当我们在guard语句中使用它时,它仍然提示我们没有退出guard的范围。
如何在 Swift 中对 fatalError 代码路径进行单元测试? 例如,我有以下swift代码 func divide(x: Float, by y: Float) -> Float {
我有一个在 Xcode 8.2.1 中用 Swift 2 编写的 iOS 应用程序,它是为 iOS 10.2 构建的。 我收到了许多来自 TestFlight 的崩溃报告,尽管有符号化,但没有任何崩溃
本文整理了Java中org.apache.hadoop.ha.ZKFailoverController.fatalError()方法的一些代码示例,展示了ZKFailoverController.fa
我有一些情况需要我的框架报告 fatalError或preconditionFailure和崩溃。我已经围绕这些条件设置了一些单元测试,以确保它们正确命中。 如果单元测试在没有测试主机应用程序的情况下
说我想做某事 val foo = when(bar) { "one" -> true "two" -> false else -> // in Swift it would be `
我在 Swift 周围闲逛,发现 fatalError 有这个签名: @noreturn public func fatalError(@autoclosure message: () -> Stri
我目前正在使用 Scala 和 Play Framework 2 开发一个项目。我想在运行时编译一些 Scala 代码并从解释器中获取结果。我在网上找了一些例子,最后得出了以下代码: package
我有一个奇怪的错误,一段时间以来我都没有设法解决。我想通过与英特尔 OpenVINO 的推理引擎一起使用来扩展一个 C++ 软件包。因此,我必须动态链接一些库并将一些 header 包含到现有代码中。
如果我的应用程序出现问题,我想立即终止该应用程序。在 swift 中我可以使用 fatalError(),是否有等效的 java? 最佳答案 我没有找到与 Android 中的 fatalError
我想放弃父类(super class)的默认初始化方法。我可以使用 Swift 中的 fatalError 轻松实现: class subClass:NSObject{ private var k
我正在尝试在 Spark 集群上运行一个基本脚本,该脚本接收一个文件,将其转换并以不同的格式输出。目前的 Spark 集群由 1 个主节点和 1 个从节点组成,两者都运行在同一节点上。完整的命令是:
使用 Swift 2,在我设计的示例中,我将 String 转换为 Int 或更具体地说是 Int 或 Int? 使用泛型。在 Int? 应该为 nil 的情况下,转换将失败并出现 fatalErro
我有一个 ViewController,它需要用 ViewModel: NSObject 初始化。 我对 ViewController 的实现是: class ViewController: UIVi
我有一个 WeMos D1 Mini 。以下是董事会信息: Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: "LOLIN(WE
我正在尝试生成我的项目文档,但在 java.lang 上出现错误 Loading source files for package com.swimtechtest.swimmer... Loadin
我是一名优秀的程序员,十分优秀!