Swift中的类似scala的foldleft方法的实现

extension Array {
    func foldLeft(a:T, action:(T, T)->T)->T {
        var ret:T = a
        for b:T in self {
            ret = action(ret,b)
        }
        return ret
    }
}

把这个放到项目当中任何一个swift文件当中,即可全局访问。

示例:

求最小值

var t = [1,3,5,4,9,100,6,-2]
let b = t.foldLeft(t[0], action: {a,b in if a<b {return a} else {return b}})

输出 -2

求和

let c = t.foldLeft(0, action: {$0+$1})

输入: 126

Swift中的类似scala的foldleft方法的实现

时间: 2024-10-06 05:34:01

Swift中的类似scala的foldleft方法的实现的相关文章

使用Koloda View在Swift中构建类似Tinder(国内的探探社交应用)的卡片

在过去几年中,随着社交网络应用程序的普及,约会应用程序也迅速出现.其中一个最突出的应用是Tinder.它不仅是一个很棒的约会应用程序,而且还在视图动画或过渡方面创建了新的iOS趋势,例如Tinder Card Swipe或Tinder UI 在这个iOS教程中,我们将学习如何在Swift中构建Tinder Swipe Cards,以便您可以将此功能包含在iOS应用程序中.目前有一些图库支持这种类型的可滑动卡片,其中一个是KolodaView.在本教程中,我们将向您展示如何使用代码示例在Swift

swift 中元组

在swift中元组类似与C语言中的结构体,在一个元组中可以包含多种数据类型,在swift中主要用于函数中做为函数返回值 Example:元组定义 方式一: let stu: (String,Int,Double,Int) = ("qj",25,175.0,80); 方式二: let stu1 = (name:"zhsan", age:25); 访问方式: 方式一:stu.0,stu.1.... 方式二:let(name,age,height,score) = stu

浅谈 Swift 中的 Optionals

input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.form-horizontal .form-group-sm input

swift中构造方法和Kvc

一.引言 构造方法是一个类创建对象最先也是必须调用的方法,在Objective-C中,开发者更习惯称这类方法为初始化方法.在Objective-C中的初始化方法与普通函数相比除了要以init抬头外并无太严格的分界,而在Swift语言体系中,构造方法与普通的方法分界十分严格,从格式写法上就有不同,普通方法函数要以func声明,构造方法统一为init命名,不需要func关键字声明,不同的构造方法采用方法重载的方式创建. 二.构造方法的复写与重载 在Objective-C中,不同的初始化方法就是不同的

swift中类似宏定义

建一个类 如,在Contans.swift中 import UIKit let kMAIN_SIZE = UIScreen.mainScreen().bounds 在其他地方直接用 比如在 MyTabbarViewController.swift中 var bgView = UIView(frame:CGRectMake(0, 0, kMAIN_SIZE.width, kMAIN_SIZE.height - 20 - 44)); swift中类似宏定义,布布扣,bubuko.com

swift中 类似OC的宏定义

OC 中调试打印 /** *  自定义Log */ #ifdef DEBUG #define JYLog(...)        NSLog(__VA_ARGS__) #else #define JYLog(...) #endif // swift中我写了这么一个类,进行调试输出 调用方法  Debug.Log(error) import UIKit class Debug: NSObject{ // TODO: 为调试修改 private static let debug = true cla

Swift中类似C++和ruby中的final机制

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在C++和ruby语言的错误处理中有一种final机制,发生在无论是否出现错误都会执行的情况.这时适合处理收尾或清理工作. 在Swift中同样存在一个defer语法,后面跟闭包可以完成类似的功能,只不过defer不仅仅可以用在错误处理中,它可以用在任何需要清理的情况: var isTrue = false func test(name:String)-

Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較类似。

闭包是功能性自包括模块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較相似. 闭包能够 捕获 和存储其所在上下文中随意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.Swift会为您管理在 捕获 过程中涉及到的内存操作. 注意:假设您不熟悉 捕获 (capturing) 这个概念也不用操心.后面会具体对其进行介绍. 在Swift函数章节中介绍的全局和嵌套函数实际上也是特殊的

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret