美文网首页
基本概念

基本概念

作者: 忆痕无殇 | 来源:发表于2019-07-29 09:57 被阅读0次
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的具体类型
参考
后续还得深入得理解,总感觉写的太肤浅。我决定不急不躁慢慢来。由浅入深哈哈。

相关文章

网友评论

      本文标题:基本概念

      本文链接:https://www.haomeiwen.com/subject/rrefrctx.html