函数:完成特定任务的代码块,通过名字来表示函数做什么

func 函数名(形参:形参类型)->返回类型

command +option+0 隐藏右边的框

//定义函数

func sayHello(name:String)->String{

let greeting = "hello " + name + "!"

return greeting

}

println(sayHello("Anno"))

// 多个参数

func minusResult(start:Int,end:Int)->Int{

return end - start

}

println(minusResult(1,10))

//无参数

func sayHelloWorld() ->String{

return "Helo World"

}

println(sayHelloWorld())

// 无返回值 Void = 空元组(tuple)

func sayGoodbye(name:String){

println("Goodby,\(name)")

}

println(sayGoodbye("Dave"))

// 多重返回值函数

func count(str:String) ->(vs:Int,cs:Int,os:Int){

var vowels = 0,consonants = 0,others = 0

for Character in str{

switch String(Character).lowercaseString{

case "a","e","i","o","u":

++vowels

case "b","c","d","f","g","h","j","k","l","m","n","p","q","t","s","t","v","w","x","y","z":

++consonants

default:

++others

}

}

return (vowels,consonants,others)

}

let total = count("some arbitrary string!")

println("\(total.vs) vowels and \(total.cs) consonants")

// 外部参数名 把两个字符串连在一起

func join(s1:String, s2:String,joiner:String) ->String{

return s1 + joiner + s2

}

println(join("hello","world",","))

// 不使用外部参数的时候,这三个参数不清楚到底是干什么的

func joins(outSting s1:String,toSting s2:String, withJoiner joiner:String) ->String{

return s1 + joiner + s2

}

println(joins(outSting:"hello",toSting:"world",withJoiner:","))

// 带来问题:调用函数的时候 写太多,解决办法 看下边

// 简写 外部参数名  参数名前 加#

//        func joins1(outSting s1:String,toSting s2:String, withJoiner joiner:String) ->String{

//            return s1 + joiner + s2

//        }

//        println(joins1(outSting:"hello",toSting:"world",withJoiner:","))

func containsCharacter(#string:String,#characterToFind:Character) ->Bool{

for character in string{

if character == characterToFind{

return true

}

}

return false

}

let containsAVee = containsCharacter(string: "qwertyuiop", characterToFind: "y")

println(containsAVee)

// 给默认参数

func joinss(outSting s1:String,toSting s2:String, withJoiner joiner:String = ",") ->String{

return s1 + joiner + s2

}

// 第三个参数 没写 直接使用默认值

let str1 = joinss(outSting: "nihao", toSting: "heri")

println(str1)

//  注意会出错

func joinbb(outSting s1:String,toSting s2:String, withJoiner joiner:String = "") ->String{

return s1 + joiner + s2

}

// 第三个参数 没写 直接使用默认值

let str2 = joinbb( outSting: "haha", toSting: "zheli", withJoiner: "+")

println(str2)

// 可变参数   传入不确定数量来输入参数     变量名类型 ...  = 数组常量

swift 基础-4的更多相关文章

  1. swift基础:第六部分:类与对象

    http://reactnative.cn/docs/0.24/getting-started.html#content(react Native 开发文档) 互联网这个时代,你松懈一天,就会有很多很 ...

  2. swift基础:第二部分:函数和闭包

    今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...

  3. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  4. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  5. swift -- 基础

    swift -- 基础 1.常量和变量 常量: let 变量: var 2.声明常量和变量 常量的声明: let let  a = 1         //末尾可以不加分号,等号两边的空格必须对应(同 ...

  6. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  7. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  8. swift基础语法(四) 函数、闭包(Closures)

    //函数基本定义 func 函数名(参数名:参数类型=默认值) ->返回值类型{代码块} //无参无返回值函数 func hsmin(){ } //单参无返回值函数 func prin(st:S ...

  9. Swift基础语法(二)

    操作符 swift中运算符基本基础于c,下面我就给大家白话白话那些被优化过的运算符们 //加号减号的妙用 var a= var b= -a//此时b=-1 var c = +b//此时 c=-1 va ...

  10. Swift基础之闭包

    内容纲要: 1.闭包基础 2.关于闭包循环引用 正文: 1.闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用.Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks) ...

随机推荐

  1. java 基础知识学习 JVM虚拟机参数配置

    1) 设置-Xms.-Xmx相等: 2) 设置NewSize.MaxNewSize相等: 3) 设置Heap size, PermGen space: Tomcat 的配置示例:修改%TOMCAT_H ...

  2. 五 Vue学习 首页学习 (上)

    首页:   http://localhost:8002/#/,  登录页面如下: index.js文件中如下的路由配置,转过去看login.vue是如何实现的. const routes = [ { ...

  3. lwip 移植

    一.源码目录结构 api . core.netif. include core下又有IPV4 . IPV6 . SNMP 和.c文件 include下又有IPV4.IPV6.LWIP.netif ne ...

  4. Camera Vision - video surveillance on C#

    转自:http://blog.csdn.net/xyz_lmn/article/details/6072897 http://www.codeproject.com/KB/audio-video/ca ...

  5. 【241】◀▶IEW-Unit06

    Unit 6 Advertising 多幅柱子在一幅图中的写作技巧 1.Model1图片分析 The bar chart contains information about the amount o ...

  6. setInterval(callbackfunc,time)中callbackfunc传参数问题

    var si=setInterval(callbackfunc,time)中callbackfunc传参数问题(循环执行) var st=setTimeout(callbackfunc,time);定 ...

  7. Ubuntu如何锁定分辨率

    终于把Ubuntu的虚拟机装好了,但是分辨率没有1920*1080是什么鬼啊? 下面详细讲一下如何设置1920*1080的分辨率并设置,主要都是照着前辈的博客自己在操作一遍熟悉一下,嘿嘿. 1.安装v ...

  8. Mac下通过homebrew安装maven

    1.安装Homebrew 将以下命令粘贴至终端 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr ...

  9. 洛谷 P1908 逆序对(归并排序解法)

    树状数组解法:https://www.cnblogs.com/lipeiyi520/p/10846927.html 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不 ...

  10. STP-9-处理RSTP中的拓扑变化

    STP能识别四种不同的拓扑变化事件, 而RSTP只有当非边界端口从非转发状态变为转发状态才认为发生了拓扑变化事件 因为刚变为转发状态的端口可以为一些mac地址提供比之前更好的路径,CAM表需要更新.失 ...