File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(
”的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C#版本,F#版本,CoffeeScript版本等。 我们不知道有多少人真的对这些单行代码
在这种情况下,我们需要使用提供的过滤函数分区一个序列。许多语言除了拥有常用的map、flatMap、reduce、filter等,还有正好能做这件事的 partitionBy 函数,Swift如你所知没有类似的东西(nspredicate提供的可以过滤的NSArray函数在这里不是我们所需要的)。
7 funcanotherPartitionBy(fu:(Self.Generator.Element)->Bool)->([Self.Generator.Element],[Self.Generator.Element]){ in (n<60)?(a.0+[n],a.1):(a.0,a.1+[n]) }) part3 ?AEXMLdocument(xmlData:NSData(contentsOfURL:NSURL(string: 稍微好了一点,但它遍历了序列两次,并且试图把它变成单行代码删除闭包功能将会导致太多重复的东西(过滤函数和数组会在两个地方使用)。 我们是否使用单个数据流建立一些能够将初始序列转换为分区元组的东西?是的,我们可以用 reduce。 "https://www.ibiblio.org/xml/examples/shakespeare/hen_v.xml" )!)!) letxmlDoc=xmlDoc{ prologue=xmlDoc.root.children[6][ "PRolOGUE" ][ 我们在这里构建了包含两个分区的结果元组,一次一个元素,使用过滤函数测试初始序列中的每个元素,并根据过滤结果追加该元素到第一或第二分区数组中。 最后得到真正的单行代码,但要注意这样一个事实,即分区数组通过追加被构建,实际上会使其比前两个实施方式要慢。 7 获取并解析XML Web服务 上面的有些语言不依赖外部库,并默认提供多个选项来处理XML(例如Scala虽然笨拙但“本地”地支持XML解析成对象),但Foundation只提供了SAX解析器NSXMLParser,并且正如你可能已经猜到的那样,我们不打算使用它。 有几个替代的开源库,我们可以在这种情况下使用,其中一些用C或Objective-C编写,其他为纯Swift。 这次,我们打算使用纯Swift的AEXML: 9 letxmlDoc= "SPEECH" ] prologue.children[1].stringValue //NowalltheyouthofEnglandareonfire, prologue.children[2].stringValue //AndsilkendallianceinthewardrobelIEs: prologue.children[3].stringValue //Nowthrivethearmourers,andhonour'sthought prologue.children[4].stringValue //Reignssolelyinthebreastofeveryman: prologue.children[5].stringValue //TheysellthepastureNowtobuythehorse, //FindtheminimumofanarrayofInts [10,-22,753,55,137,-1,-279,1034,77].sort().first //FindthemaximumofanarrayofInts primes=Set(2...n) (2...Int(sqrt(Double(n)))).forEach{primes.subtractInPlace((2*primes.sort() ).strIDe(through:n,by:sameprimes.subtractInPlace((2...Int(sqrt(Double(n)))) ))} .flatMap{(2*sameprimes.sort() ).strIDe(through:n,by:(a,b)=(b,a) )}) a 8 在数组中查找最小(或最大)值 我们有各种方法来找到序列中的最小和最大值,其中有 minelement 和maxElement 函数: 8 //2 b //1 9 并行处理 某些语言允许用一种简单和透明的方式启用数组对功能,例如map和flatMap的并行处理,以加快顺序和独立 *** 作的执行。 此功能Swift中还不可用,但可以使用GCD构建:http://moreindirection.blogspot.it/2015/07/gcd-and-parallel-collections-in-swift.HTML 10 埃拉托斯特尼筛法 埃拉托斯特尼筛法用于查找所有的素数直到给定的上限n。 从小于n的所有整数序列开始,算法删除所有整数的倍数,直到只剩下素数。并且为了加快执行速度,我们实际上并不需要检查每个整数的倍数,我们止步于n的平方根就可以了。 根据这一定义首次执行可能是这样的: 我们使用外部范围来迭代我们要检查的整数,并且对于每一个整数我们使用 strIDe(through:Int by:Int)计算出数字的倍数的序列。那些序列然后从Set中减去,Set用所有从2到n的整数初始化。 但正如你所看到的,为了实际移除倍数,我们使用外部可变Set,导致了附带后果。 为了消除附带后果,正如我们通常应该做的那样,我们会先计算所有序列,用倍数的单一数组来flatMap它们,并从初始Set中删除这些整数。 sameprimes=Set(2...n) [+++] [+++] [+++] 方式更清洁,使用flatMap的一个很好的例子以生成扁平化的嵌套数组。 11 其他:通过解构元组交换 最后一点,并非每个人都知道的是,和其他有tuple类型的语言一样,元组可以用来执行紧凑的变量交换: a=1,b=2 [+++] [+++] [+++] [+++] [+++] 好了,正如所料,Swift和其他语言一样富有表现力。 你有其他想要分享的有趣的Swift单行代码吗?一起来聊一聊吧! 总结 以上是内存溢出为你收集整理的10个惊艳的Swift单行代码全部内容,希望文章能够帮你解决10个惊艳的Swift单行代码所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 )
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
| | |