swift系统学习第二章
第五节:可选类型 optional
//: Playground - noun: a place where people can play import UIKit /*
Swift学习第五节
可选类型 optional(可能是任何值) */
let possibleNumber = ""
var result = Int(possibleNumber)
print(result)
result.dynamicType
//上面就是一个可选类型的举例,possibleNumber开始是一个string,然后强转为Int,这里可能失败(可能转为Int,也可能是nil). var x:Int? //定义一个可选类型x,可能Int也可能其他.默认为nil
var address:String?
var successRate:Double? result = nil //可以为一个可选类型赋值为nil,但是普通类型不可以 //访问可选类型
if result != nil{
print(result!)
}
//print(x!) error;可选类型不能直接输出,必须先行判断 if let num = result{
print(result)
}else{
print("num为nil")
第六节:函数 函数参数
//: Playground - noun: a place where people can play import UIKit
/*
swift学习第六节
函数 函数参数
func 方法名(参数名:参数类型){
方法体
}
*/
//写一个方法
func printName(){
print("my name is 少停")
}
printName()//调用 func ten(num:Int){
print("\(num * 10)")
}
ten() func mult(num1:Int,num2:Int){
print("\(num1*num2)")
}
mult(, num2: ) //num2 为外部参数名 func create(num3:Int,_ num4:Int){
print("\(num3*num4)") // _ 使用_代替外部参数名简化
}
create(, ) func make(NUM1 num1:Int,NUM2 num2:Int){
print("\(num1*num2)")
} //NUM1 NUM2 外部参数名,外部参数名只是方便理解
make(NUM1: , NUM2: ) func make1(NUM1 num1:Int = ,NUM2 num2:Int = ){ //为参数赋初始化
print("\(num1*num2)")
}
make1() func arySum(number:Double ...){//参数为Double类型的number,可以有很多个
var sum: Double =
for i in number{
sum += i
}
print("\(sum)")
}
arySum(,,,,)
arySum(,) //func sum(value : Int){
// value++
//} error:swift中函数参数分为常量参数和变量参数,函数参数默认是常量参数,不能修改. func sum(var value:Int){
value++;
}
var m = ;
sum(m);
m
//在函数内对一个参数进行修改后,在函数外部仍然不会改变 func summ(inout value:Int){//想在函数内修改参数后,在外部仍然有效需要使用inout
value++
}
var n =
summ(&n)
n
第七节:函数 函数返回值和类型
//: Playground - noun: a place where people can play import UIKit /*
swift学习第七节
函数 函数返回值和类型 */
func sum(num1:Int,num2:Int) -> Int{ //返回一个返回值
return num1*num2;
}
var m = sum(, num2: ) func num(num1:Int,num2:Int) -> (Int,Int){ //返回两个返回值
return (num1,num2)
}
var table = num(, num2: )
table.
table. func num2(num1:Int,num2:Int) -> (n1:Int,n2:Int){ //返回两个返回值,且为返回值赋名
return (num1,num2)
}
var nn = num2(, num2: )
nn.n1
nn.n2 func string2Int(str:String) -> Int?{
return Int(str)
}
var n = string2Int("")
n.dynamicType var f1:(Int,Int) -> Int = sum
var f2:(Int,Int) -> (Int,Int) = num
var f3:String -> Int? = string2Int
//----------------------------------------------------------------
//把函数作为参数使用:execute为一个函数,这个函数有两个参数,一个参数是一个函数(参数为string,返回值是int),另外一个参数是string
func execute(fn:(String) -> Int?,fnParam:String){
fn(fnParam)
}
execute(f3, fnParam: "") //---------------------------------------------------------------- //func increment(n:Int) -> Int{
// return n+1
//}
//func decrement(n:Int) -> Int{
// return n-1
//}
////whichOne函数:有一个参数n,返回值是一个函数(参数是int,返回值也是int)
////func whichOne(n:Bool) -> ((Int) -> Int){
//// return n ? increment : decrement
////}
//typealias op = (Int) -> Int
//func whichOne(n:Bool) -> op{
// return n ? increment : decrement
//}
//var one = 1
//var one2Ten = whichOne(one < 10)
//while one < 10 {
// one = one2Ten(one)
//}
//上面的代码可以使用内嵌函数增强可读性
typealias op = (Int) -> Int
func whichOne(n:Bool) -> op{
func increment(n:Int) -> Int{
return n+
}
func decrement(n:Int) -> Int{
return n-
} return n ? increment : decrement
}
var one =
var one2Ten = whichOne(one < )
while one < {
one = one2Ten(one)
}
第八节:Closures
//: Playground - noun: a place where people can play import UIKit
/*
swift学习第八节
Closures */
let ten =
var addClosure: (Int,Int) -> Int = {(a:Int,b:Int) -> Int in
return a + b
}
addClosure(,)
addClosure = { a, b in return a + b}
addClosure = {a, b in a + b} //Single expression closure
addClosure = {$ + $}
源码下载:http://download.csdn.net/detail/shaoting19910730/9463646
https://github.com/pheromone/swift2
swift系统学习第二章的更多相关文章
- swift系统学习第一章
第一节:变量,常量,类型推断,字符,字符串 //swift学习第一节 /* 变量 常量 类型推断 字符 字符串 */ import UIKit //变量 var str = "swift&q ...
- oracle学习 第二章 限制性查询和数据的排序 ——03
这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7 怎样使用转义(escape)操作符 ...
- Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触
第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...
- Java基础知识二次学习-- 第二章 基础语法与递归补充
第二章 基础语法与递归补充 时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第二章
Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...
- Ruby学习-第二章
第二章 类继承,属性,类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name,description都被Treasure继承 2.以下三种方 ...
- C#高级编程 (第六版) 学习 第二章:C#基础
第二章 基础 1,helloworld示例: helloworld.cs using System; using System.Collections.Generic; using System.Li ...
- swift系统学习第三章
第九节:结构体-sturt //: Playground - noun: a place where people can play import UIKit /* swift学习第九节 结构体:st ...
- Struts2框架学习第二章——Struts2下的HelloWorld
本章要点 — Struts 2的下载和安装 — 纯手工创建一个Web应用 — 纯手工创建一个Struts 2应用 — 实现Struts 2的Action — 配置Struts 2的Action — ...
随机推荐
- 补第二周四人小组WBS/NABCD
四人小组项目<东北师范大学论坛> 要求: 1.给出需求概述.功能列表.痛点或亮点.NABCD及WBS模型在此项目中的应用. 2.不熟悉的名词,自行搜索资料并参考教材第393页开始的术语索引 ...
- java版本的学生管理系统
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.event.Ac ...
- 史上最用心的 iOS App 上架流程
题记 麻痹起来嗨!看网上那么多的教程,依然在我心爱的爱屁屁在上架的时候遇到各种 J8 问题,最大的问题就是:Xcode 证书什么的,Provisioning Profile 什么的,Debug 什么的 ...
- 使用nexus搭建maven仓库(本地私服)
我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下).如果公司内部搭了一个 ...
- formvalidator4.1.3 使用过程中一些问题的解决
在使用formvalidator4.1.3 插件时 发现 正常情况调用时没有问题的,但是我们的项目中需要把css .js 之类的静态资源用单独的域名加载. 那么问题就来了在 该插件中 有一段这样的 ...
- 一个关于qml插件的文章-转
制作Qt Quick 2 Extension Plugin的几个问题-Qt 经过几天的google和爬帖,加上自己的摸索,终于把新版的Qt Quick 2制作插件的问题给弄了个明白,工作流可以建立了. ...
- java 面向对象编程-- 第十三章 反射、类加载与垃圾回收
1.狭义JavaBean规范 Javabean必须包含一个无参数的public构造方法,方便通过反射的方式产生对象. 属性必须都是私有的. Javabean必须包含符合命名规范的get和set方法,以 ...
- 使用AlarmManager设置闹钟----之一
import java.util.Calendar; import android.os.Bundle;import android.app.Activity;import android.app.A ...
- Oracle练习题20~33
20.查询score中选学多门课程的同学中分数为非最高分成绩的记录. 21. 查询成绩高于学号为“109”.课程号为“3-105”的成绩的所有记录. 22.查询和学号为108的同学同年出生的所有学生的 ...
- 关于Linux下C编译错误(警告)cast from 'void*' to 'int' loses precision
char *ptr; //此后省略部分代码 ) //出错地方 那句话的意思是从 void* 到 int 的转换丢失精度,相信看到解释有些人就明白了, 此问题只会出现在X64位的Linux上,因为在64 ...