SwiftUI Macaw 如何修复Expression was too complex to be solved in reasonable time
问题
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相关推荐
- iOS swift2.3 迁移到3.0 遇到的一些问题
在swift2.3的时候,因为项目需求,需要做一个能够根据加速度来得到你行走的计步器,然后做完计步器,每走一步路后,通过跳转,跳到主线程进行画图画点. 然而最近一段时间,电脑更新到了Xcode8.0 ...
- Refactor!™ for ASP.NET--ASP.NET代码重构插件
Teaching Demo: http://www.devexpress.com/Products/NET/IDETools/CodeRush/Training.xml 有些功能在JBuilder20 ...
- Optimizing regular expressions in Java
2019独角兽企业重金招聘Python工程师标准>>> SRC URL:http://www.javaworld.com/article/2077757/core-java/opti ...
- 达梦数据charindex_更新日志 · dotnetcore/FreeSql Wiki · GitHub
每三个月一次版本号:2.3/2.6/2.9,修复严重 bug 会发布 2.3.x v2.3-preview (myget.org) 增加 Column 特性 RewriteSql/RereadSql: ...
- ssis 派生列_SSIS脚本组件与派生列
ssis 派生列 介绍 (Introduction) In this article, we will show how to convert dates from dd/mm/yyyy to mm/ ...
- 开源Excel报表工具:jxls
用Excel出报表是我们办公中经常有的事情.如何通过查询数据库然后生成报表呢?现在有很多开源的工具可以实现这个需求,当然也有很多收费的工具.介绍一下开源Excel报表工具jxls.jxls的官方网站( ...
- C11 标准特性研究
前言 - 需要点开头 C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准. 相比C99,C11有哪些变化呢!!所有的测试全部基于能够和标准贴合的特性平台. 但 ...
- Microbiome:微生物组名词定义
文章目录 微生物组相关词汇定义 作者 摘要 Microbiota 微生物群 Metataxonomics 宏分类组 Metagenome 宏基因组 Microbiome 微生物组 Metabolomi ...
- C99:C标准库接口的头文件集和功能定义参考
C标准库C99头文件 <assert.h> <complex.h> <ctype.h> <errno.h> <fenv.h> <flo ...
最新文章
- Nginx CONTENT阶段 static模块
- 隐性饥饿谋定功能性农业-农业大健康·万建民:对接精准扶贫
- 【DP】Bovine Genetics G(P7152)
- 注解之RetentionPolicy,ElementType
- 所有C#程序员必须知道的13件事
- android列表的默认值,ListPreference默认值没有显示
- vscode 设置整体界面字体的大小
- 13.2 处理静态资源【从零开始学Spring Boot】
- 计算机管理3d设置在哪,NVIDIA控制面板设置方法(图解)
- 一级计算机office选择题题库及答案,计算机一级msoffice选择题题库40套含答案
- solidworks装配体改为柔性_SolidWorks零件改名后与工程图关联教程
- 迅雷“去中心化”再升级 转型中All in 区块链
- pycharm条件判断
- 【语音识别】基于动态时间规整算法(DTW)实现中文语音识别系统含Matlab源码
- 电脑仙人掌机器人作文_蜗牛、仙人掌、电脑、雪人、机器人、蚕宝宝、大象选三到四个词作文...
- github创建仓库以及上传项目到github
- 【C语言】从零开始的C语言小游戏之路(总)
- CTFHUB POST
- 机顶盒宽带拨号失败服务器未响应,机顶盒详细错误代码.doc
- TimescaleDB部署