问题

Expression was too complex to be solved in reasonable time

解决方案

Swift对类型推断的使用使我们的代码更短,更易于阅读,但同时也占用了大量CPU时间。 有时,值可能是几种类型之一,如果它与可能是几种类型之一的另一种东西一起使用,那么Swift要做的工作量就会成倍增加。 如果Swift遇到的可能性太多,以至于大约15秒后根本无法弄清,它就会抛出错误:“表达太复杂,无法在合理的时间内解决; 考虑将表达式分成不同的子表达式。”

Swift团队正在努力为每个新版本的Swift进行改进,并且编译器何时会抛出此错误没有真正的固定界限。 幸运的是,此错误消息告诉您要解决此问题的确切方法:将表达式分成多个子表达式。

例如,这种代码在现代Mac上编译几乎需要2秒钟:

let sum = [1, 2, 3].map { String($0) }.compactMap { Int($0) }.reduce(0, +)

在较旧的Mac上,Swift确实很挣扎,因此,明智的做法是将其分解为多个子表达式,如下所示:

let numbers = [1, 2, 3]
let stringNumbers = numbers.map { String($0) }
let intNumbers = stringNumbers.flatMap { Int($0) }
let sum = intNumbers.reduce(0, +)

修复Macawbug

问题代码

    let a = { i inm1[i] + c * m2[i] + s * m3[i]}

修复后

  /*let a = { i inm1[i] + c * m2[i] + s * m3[i]}
*/
self.init(values: [
acal(i:0, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:1, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:2, m1: m1, c: c, m2: m2, s: s, m3: m3),
0,
0,
acal(i:3, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:4, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:5, m1: m1, c: c, m2: m2, s: s, m3: m3),
0, 0,
acal(i:6, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:7, m1: m1, c: c, m2: m2, s: s, m3: m3),
acal(i:8, m1: m1, c: c, m2: m2, s: s, m3: m3),
0, 0,0, 0, 0, 1, 0])
}}func acal(i:Int,m1:[Double],c:Double,m2:[Double],s:Double,m3:[Double]) -> Double {
return m1[i] + c * m2[i] + s * m3[i]}

推荐

基础文章推荐

  • 《SwiftUI是什么,听听大牛们如何说》

经典教程推荐

  • 更新近百篇SwiftUI教程《SwiftUI2020教程》
  • 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》

上新

  • 《WWDC2020专栏》
  • 《SwiftUI WWDC2020 新增组件列表》

技术源码推荐

推荐文章

CoreData篇

  • SwiftUI数据存储之做个笔记App 新增与查询(CoreData)
  • SwiftUI进阶之存储用户状态实现登录与登出
  • SwiftUI 数据之List显示Sqlite数据库内容(2020年教程)

Combine篇

  • 一篇文章学懂弄通SwiftUI与Combine(含轮播动画App源码)

TextField篇

  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • 《SwiftUI实战之TextField风格自定义与formatters》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
  • 《SwiftUI 当键盘出现时避免TextField被遮挡自动向上移动》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》

JSON文件篇

  • SwiftUI JSON文件下载、存储、解析和展示(代码大全)

一篇文章系列

  • SwiftUI一篇文章全面掌握List(教程和源码)
  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • SwiftUI一篇文章全面掌握Picker,解决数据选择(教程和源码)
  • SwiftUI一篇文章全面掌握Form(教程和源码)
  • SwiftUI Color 颜色一篇文章全解决

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

  • 请关注我的专栏icloudend, SwiftUI教程与源码
    https://www.jianshu.com/c/7b3e3b671970

http://www.taodudu.cc/news/show-5344335.html

相关文章:

  • Macaw:让你像处理图片那样写Web代码
  • macaw php,用 Composer构建自己的 PHP 框架之构建路由
  • 脉歌蓝牙耳机线评测_Macaw脉歌 TX-80 蓝牙运动耳机 个人小评测
  • 新书的各种购买方式汇总【人人都是产品经理:9082】
  • asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程
  • 基于JavaWeb(SSM框架)的网上书店的设计与实现
  • 大学生网购市场环境分析
  • 网上书城介绍
  • 不平衡数据集处理办法
  • pycharm写代码光标变成了黑框
  • python获取本年度每月第一天,每月最后一天,时间-1天,日期分季度
  • @RequestBody序列化有@Builder修饰的实体类时产生的问题
  • python判断两个列表中的元素是不是全都一样
  • 数据处理常用
  • 结构化数据与非结构数据、监督学习与非监督学习、标记与无标记
  • 读取导入csv csv报错iterable expected, not float
  • 数据库MySQL5.7.21win64位安装配置
  • Python数据处理方式
  • android kvm linux,GitHub - QEMUINANDROID/QEMUARMLINUXANDROID: 移植linux上的qemu虚拟化软件到android...
  • 税务局接口-xml格式和对象互转工具类使用说明
  • 如何使用nacos+dubbo注册
  • sklearn训练感知器用iris数据集
  • nacos+dubbo调用成功案例
  • xgboost原理,怎么防止过拟合。随机森林,GBDT,Xgoost的区别,bagging和boosting
  • Beanutils造成dubbo反序列化失败?
  • java反序列化流建立失败_关于java:处理dubbo反序列化失败的坑
  • java反序列化失败怎么处理_处理dubbo反序列化失败的坑
  • Linux网络设置与基础服务
  • 算法训练营:道路升级
  • 毕业以后助学贷款怎么还

SwiftUI Macaw 如何修复Expression was too complex to be solved in reasonable time相关推荐

  1. iOS swift2.3 迁移到3.0 遇到的一些问题

    在swift2.3的时候,因为项目需求,需要做一个能够根据加速度来得到你行走的计步器,然后做完计步器,每走一步路后,通过跳转,跳到主线程进行画图画点. 然而最近一段时间,电脑更新到了Xcode8.0 ...

  2. Refactor!™ for ASP.NET--ASP.NET代码重构插件

    Teaching Demo: http://www.devexpress.com/Products/NET/IDETools/CodeRush/Training.xml 有些功能在JBuilder20 ...

  3. Optimizing regular expressions in Java

    2019独角兽企业重金招聘Python工程师标准>>> SRC URL:http://www.javaworld.com/article/2077757/core-java/opti ...

  4. 达梦数据charindex_更新日志 · dotnetcore/FreeSql Wiki · GitHub

    每三个月一次版本号:2.3/2.6/2.9,修复严重 bug 会发布 2.3.x v2.3-preview (myget.org) 增加 Column 特性 RewriteSql/RereadSql: ...

  5. ssis 派生列_SSIS脚本组件与派生列

    ssis 派生列 介绍 (Introduction) In this article, we will show how to convert dates from dd/mm/yyyy to mm/ ...

  6. 开源Excel报表工具:jxls

    用Excel出报表是我们办公中经常有的事情.如何通过查询数据库然后生成报表呢?现在有很多开源的工具可以实现这个需求,当然也有很多收费的工具.介绍一下开源Excel报表工具jxls.jxls的官方网站( ...

  7. C11 标准特性研究

    前言 - 需要点开头 C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准. 相比C99,C11有哪些变化呢!!所有的测试全部基于能够和标准贴合的特性平台. 但 ...

  8. Microbiome:微生物组名词定义

    文章目录 微生物组相关词汇定义 作者 摘要 Microbiota 微生物群 Metataxonomics 宏分类组 Metagenome 宏基因组 Microbiome 微生物组 Metabolomi ...

  9. C99:C标准库接口的头文件集和功能定义参考

    C标准库C99头文件 <assert.h> <complex.h> <ctype.h> <errno.h> <fenv.h> <flo ...

最新文章

  1. Nginx CONTENT阶段 static模块
  2. 隐性饥饿谋定功能性农业-农业大健康·万建民:对接精准扶贫
  3. 【DP】Bovine Genetics G(P7152)
  4. 注解之RetentionPolicy,ElementType
  5. 所有C#程序员必须知道的13件事
  6. android列表的默认值,ListPreference默认值没有显示
  7. vscode 设置整体界面字体的大小
  8. 13.2 处理静态资源【从零开始学Spring Boot】
  9. 计算机管理3d设置在哪,NVIDIA控制面板设置方法(图解)
  10. 一级计算机office选择题题库及答案,计算机一级msoffice选择题题库40套含答案
  11. solidworks装配体改为柔性_SolidWorks零件改名后与工程图关联教程
  12. 迅雷“去中心化”再升级 转型中All in 区块链
  13. pycharm条件判断
  14. 【语音识别】基于动态时间规整算法(DTW)实现中文语音识别系统含Matlab源码
  15. 电脑仙人掌机器人作文_蜗牛、仙人掌、电脑、雪人、机器人、蚕宝宝、大象选三到四个词作文...
  16. github创建仓库以及上传项目到github
  17. 【C语言】从零开始的C语言小游戏之路(总)
  18. CTFHUB POST
  19. 机顶盒宽带拨号失败服务器未响应,机顶盒详细错误代码.doc
  20. TimescaleDB部署

热门文章

  1. 流媒体网络协议 -- HLS
  2. 教你怎样通过SEO做出高权重网站
  3. HTML中关于空格的使用
  4. 计算机桌面锁写快捷,电脑如何锁屏幕 锁屏快捷键是什么
  5. Jenkins配置ldap错误导致无法登陆的问题
  6. 程序员需要“程序员鼓励师”吗,对程序员到底有没有效果?看一下!
  7. Stay教你程序员泡妞攻略
  8. 软件被人后台篡改了收款码属于入侵吗?
  9. STM32必备知识点(面试和工作用的到)
  10. 推荐软件7 taskbar numberer,结果get了WIN相关的快捷键