问题:
我有一个半大的[Int]
数组,其中包含〜25K到60K元素。它最初是通过我的第一个程序输出到一个文本文件中的,并且需要将其作为let
的值输入到第二个程序中。要做到这一点,我手动将其复制。但是,每当我尝试初始化它时,Swift都会冻结。通过冻结,我的意思是它什么都不做,即使在一个小时之后。Swift 3.1:数组太大而无法初始化? (程序只是冻结)
进一步调查:
我证实,这是阵列造成封河的大小,只用一行,只是说let test = [the_array]
创建一个测试程序。该程序在一小时后仍在运行。
我以前使用包含400-450K元素的数组没有任何问题。但是,这些数组不必作为变量/常量初始化,每个元素只包含1-9之间的数字。导致冻结的数组肯定具有小于100K的元素,但每个元素都包含100-300K之间的整数。
我该如何将数组初始化为第二个程序,究竟是什么导致了这个问题?
其他信息:我在Ubuntu 16.04 64位上使用Swift 3.1.1,所以我没有访问Xcode的权限。如果你需要数组的文本文件,请留下评论。 File is uploaded here
https://stackoverflow.com/a/31329368/7347933q – paper1111
你给你的阵列显式类型:'让测试:[INT] = [ ...'?如果Swift不得不推断这种类型,那么对于大文字来说Swift就不太好。 – vacawama
@vacawama哇,我从来没有想到这一点。我现在会尝试。 – Imagen