1:FRP 函数响应式编程
找到一篇写的很好的文章函数响应式编程(FRP)思想
理解是一步是一步,利用函数调用函数。y = f(f(x))
let array = [1,2,3,4,5,6,7]
for num in array {
if num > 3{
let number = num + 1
if (number % 2 == 0)
{
print(number)
}
}
}
函数式:
array.filter{ $0 > 3 }
数学的函数:函数的定义给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示。 [1] 函数概念含有三个要素:定义域A、值域C和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
2:可选性
参考 可选类型伴随着Swift诞生,在原有的Objective-C语言中不存在,究其原因,是因为Swift是类型安全的语言,而OC则是弱类型语言,OC中 str字符串既可以是nil,也可以是字符串,而Swift中,这两种状态是不能同时存在的。
在Swift中Optional(可选类型)是一个含有两种情况的枚举,None 和 Some(T),用来表示可能有或可能没有值。任何类型都可以明确声明为(或者隐式转换)可选类型。当声明一个可选类型的时候,要确保用括号给 ? 操作符一个合适的范围。
var optionalStr: String? = "swift语言可选类型"//声明可选类型字符串,并赋初值
var opStu:Student? //声明可选opStu对象,赋初值nil
3:类
Swift类是构建代码所用的一种通用且灵活的构造体。[参考]([https://www.jianshu.com/p/31e4c8a40496](https://www.jianshu.com/p/31e4c8a40496)
)我们可以为类定义属性(常量、变量)和方法。
与其他编程语言所不同的是,Swift并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其他代码的外部接口。
类定义
class student {
var studentName : String
var mark1 : Int
var mark2 : Int
}
4:枚举
参考
与OC不一样,Swift的枚举牛逼得多了,OC只能玩Int,他能玩:
- 整型(Integer)
- 浮点数(Float Point)
- 字符串(String)
- 布尔类型(Boolean)
enum Movement:Int {
case left = 0
case right = 1
case top = 2
case bottom = 3
}
enum Area: String {
case DG = "dongguan"
case GZ = "guangzhou"
case SZ = "shenzhen"
}
5:结构体
在Swift中结构体的功能被扩大化了,基本拥有了和类差不多的功能:
- 定义属性
- 定义方法
- 定义getter和setter
- 可以定义初始化器来设置初始状态
- 实现扩展的功能
- 遵循协议,并实现协议的方法
- 结构总是被复制,并且不使用引用计数。
6:协议
协议是定义一些规范(属性、功能方法),然后由类、结构体或者枚举遵循并实现这些规范,这一过程被称为遵循了协议。
1:定义一个协议
protocol SomeProtocol {
//这里是协议的定义部分
}
protocol AnotherProtocol{
//这里是协议的定义部分
}
7:泛型
1:定义一个泛型函数
func SwapTwoValues <T> (inout a: T,inout b :T){
let tempValue = a
a = b
b = tempValue
}
这个函数主体、功能跟上面的例子类似,用来交换两个同样类型的值,但是这个函数用 T 占位符来代替实际的类型。并没有指定具体的类型,但是传入的a ,b 必须是同一类型T。在调用这个函数的时候才能指定 T 是那种具体的类型。还有函数名后跟的那个 <T> 是函数定义的一个占位类型名,并不会查找T的具体类型
参考
后续还得深入得理解,总感觉写的太肤浅。我决定不急不躁慢慢来。由浅入深哈哈。