swift 柯里化(示例通知事件)
来源:互联网 发布:java集合有几种 编辑:程序博客网 时间:2024/05/16 05:13
柯里化 :一个方法有几个参数只传递第一个参数,返回的将是一个方法
举个例子加强理解,网络请求的时候,是不是有一个固定的URL前缀,每一个接口后面拼接的URL都会不同,柯里化就很酷的解决这个问题
这是在全局文件定义的代码,注意下面这个方法,在传入第一个参数的,方法体的代码并不会执行,而是返回一个方法(这个方法有一个形参mutableURL,一个返回值:完整的url字符串)
func spliceRequestURL(fixURLHead:String)(mutableURL:String)->String{
return fixURLHead.stringByAppendingString(mutableURL)
}
/// swift没有宏概念,用全局方法代替宏就可以了
let GetFullRequestURL =spliceRequestURL("http://www.baidu.com/")
下面看看怎么使用:let requestURL =GetFullRequestURL(mutableURL:"userCenter/Myinfo/ModifyName")
print(requestURL)
最后打印出来 http://www.baidu.com/userCenter/Myinfo/ModifyName 这个地址
基本思想就是这样,运用各有不同,自定义通知 代码,以供参考
//
// currying.swift
// TestRAC
//
// Created by 道法自然 on 16/7/5.
// Copyright © 2016年 xiaying. All rights reserved.
//
import UIKit
/// 目标事件协议
protocol TargetAction {
func performAction()
}
/**
OC中的委托
事件包装结构,这里是泛型,这里表示传入的数据类型可以是AnyObject
这个方法遵循TargetAction协议来处理事件
*/
struct TargetActionWrapper<T: AnyObject>:TargetAction{
weak var target: T?
let action: (T) -> () -> ()
func performAction() -> () {
iflet t =target {
action(t)()
}
}
}
/// 枚举事件
enum ControlEvent {
case TouchUpInside
case ValueChanged
//...
}
/// 例子
class currying{
var actions = [ControlEvent :TargetAction]()
func setTarget<T:AnyObject>(target:T,action: (T) -> () -> (),controlEvent:ControlEvent){
actions[controlEvent] =TargetActionWrapper(target: target,action: action)
}
/// 移除
func removeTargetForControlEvent(controlEvent:ControlEvent){
actions[controlEvent] =nil
}
/// 执行
func performActionForControlEvent(controlEvent:ControlEvent){
actions[controlEvent]?.performAction()
}
}
- swift 柯里化(示例通知事件)
- swift 通知
- 事件通知
- swift 本地通知、远程通知
- Swift 取消本地通知
- swift 通知的封装
- swift使用通知NSNotification
- swift 本地通知
- iOS Swift NSNotificationCenter 通知
- 编写Android通知示例
- iOS通知使用示例
- Swift - 使用NSNotificationCenter发送通知,接收通知
- 事件示例
- swift中通知的使用
- Swift 通知的使用(十一)
- 推送通知 Swift 菜鸟指南
- Swift中移除通知
- Swift 本地推送通知UILocalNotification
- cannot be cast to android.widget.HeaderViewListAdapter
- shared_ptr 真的非常的有用
- 常规功能和模块自定义系统 (cfcmms)—053把一对多(OneToMany)字段的grid加入到form中
- APK瘦身记,如何实现高达53%的压缩效果
- linux原始套接字(1)-arp请求与接收
- swift 柯里化(示例通知事件)
- [Leetcode]235. Lowest Common Ancestor of a Binary Search Tree
- 安装Tomcat后的环境变量设置
- Android OkHttp(1)
- 使用Retrofit通过post提交Json数据
- 15 张令人喷饭的 IT 趣图(第1季)
- UITabBarController使用
- OpenStack Neutron运行机制解析概要
- 【JZOJ4596】Stree