swift 重载 泛式 inout的使用

函数

func 关键字 -> 表示返回值信息等等

那我们接下来利用函数做几件事情

-a 比较两个数字的大小

-b 比较两个字符串

-c 既能比较字符串,又能比较数字

a情况

func checkedAreEqual(Value : Int,Expected :Int, Message :String)
{
if Value != Expected
{
print(Message)
} }

b情况

// 函数名相同可以 返回值不同可以同时存在

// 比较两个字符串
func checkedAreEqual(Value : String, Expected :String, Message :String)
{
if Value != Expected
{
print(Message)
} }
checkedAreEqual(1, Expected: 2, Message: "Not Equal")
//
checkedAreEqual("cat", Expected: "dog'", Message: "Not Equal")

c情况

func checkedAreEqual<T:Equatable>(Value : T, Expected :T, Message :String)
{
if Value != Expected
{
print(Message)
} }

特殊之处就在于这个Equatable

inout

//inout 修饰的传递的是地址
// 默认是 let
// 改成var 就是常量
// 在 let 位置修改下 inout
//func square (let numer:Double)
//{
// // use of unresolved identiifer 'number'
// number = number * number
//} func square (inout number:Double)
{
number = number * number
}

总之

1.swift 中 重载 传递的参数类型不同也可以重载

2.范式可以更好的兼容数据类型,利于不同类型数据的比较

3.inout 可以再 一个没有返回值的函数 修改该函数的形参

注意传递进去的时候要 写上&,inout就像是告诉编译器哥们 我穿的是地址 ,有点址传递的味道了,swift 确实很高级··

swift 重载 泛式 inout的使用的更多相关文章

  1. [译] Swift 的响应式编程

    原文  https://github.com/bboyfeiyu/iOS-tech-frontier/blob/master/issue-3/Swift的响应式编程.md 原文链接 : Reactiv ...

  2. 数据库 SQL :数据库三大泛式简谈

    相信,在学习数据库知识时,大家都会碰到这个概念问题:数据三大泛式,同时,在面试过程中,可能大部分面试官也会提及这个问题. 首先,看看维基百科对于三大泛式的定义: 数据库规范化,又称数据库或资料库的正规 ...

  3. iOS开发--Swift RAC响应式编程初探

    时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...

  4. iOS开发--Swift RAC响应式编程

    时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...

  5. C++练习 | 模板与泛式编程练习(2)

    #include <iostream> #include <cmath> #include <cstring> #include <string> #i ...

  6. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching

    A query word matches a given pattern if we can insert lowercase letters to the pattern word so that ...

  7. Swift 实践篇之链式 UI 代码

    https://blog.nswebfrog.com/2017/10/20/swift-practice-ui-chaining-code/

  8. C++练习 | 模板与泛式编程练习

    #include <iostream> #include <cmath> #include <cstring> #include <string> #i ...

  9. C++ 运算符重载三(链式编程)

    //运算符重载之链式编程 #include<iostream> using namespace std; //对于友元函数重载运算符只适用于左操作数是系统变量的场景 //因为成员无法在系统 ...

随机推荐

  1. C++explicit关键字

    在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: *     explicit  ...

  2. Web Services 介绍

    Web Services 介绍 Web Services 是建立可交互操作的分布式应用程序的新平台 ; Web Services 平台是一套标准,它定义了应用程序如何在 Web 上进行交互操作 , 你 ...

  3. 构建高可用web站点学习(二)

    web站点的缓存学习 缓存在web应用里面十分常见,也有各种各样的缓存,从请求开始一直到代码处理的阶段都可以采取缓存.下面就逐一介绍: 一.客户端缓存(浏览器和http方面) 前端页面缓存主要遵循ht ...

  4. mapreduce (二) MapReduce实现倒排索引(一) combiner是把同一个机器上的多个map的结果先聚合一次

    1 思路:0.txt MapReduce is simple1.txt MapReduce is powerfull is simple2.txt Hello MapReduce bye MapRed ...

  5. ubuntu matplotlib 安装

    sudo apt-get install python-numpy //必须 sudo apt-get install python-matplotlib //必须

  6. IIS 内部运行机制及Asp.Net执行过程详解

    一直以来对一个Asp.net页面穿过IIS后就返回给浏览器一个HTML页面感觉很是神奇.虽然做技术这么长时间了,也曾经大致了解过一点来龙去脉,但是如果你真的问起我比较详细的过程,我还真的回答不上来,好 ...

  7. 揭开.NET消息循环的神秘面纱(GetMessage()无法取得任何消息,就会进入Idle(空闲)状态,进入睡眠状态(而不是Busy Waiting)。当消息队列不再为空的时候,程序会自动醒过来)

    揭开.NET消息循环的神秘面纱(-) http://hi.baidu.com/sakiwer/item/f17dc33274a04df2a9842866 曾经在Win32平台下奋战的程序员们想必记得, ...

  8. Linux定时运行与开机运行任务

    http://os.51cto.com/art/200805/75144.htm at命令与crontab命令 http://os.51cto.com/art/201007/211874.htm ht ...

  9. Java ClassLoader基础及加载不同依赖 Jar 中的公共类(转)

    http://www.iteye.com/topic/1135259 http://www.trinea.cn/android/java-loader-common-class/ http://www ...

  10. HDU 2389 Rain on your Parade

    大意:在一个二维坐标系上有nx个人和ny把伞,每个人都有自己的移动速度,问有多少人可以再 time 时间内移动到不同的雨伞处(不允许两个人共用一把伞).   输入数据: 第一行是一个T代表T组测试数据 ...