Swift初级(一),课堂代码

//  main.swift

//  Swift初级(一)

//  Created by  on 15/11/2.

//  Copyright © 2015年  All rights reserved.

//当需要导入类库的时候,使用import 类库名,不用再加<>或者""

//

import Foundation

print("Hello, World!")//在swift中,使用print输出

//1.定义常量(let)和变量(var)

//定义常量

let myGender = "男"//commond+ctrl+空格可添加表情

//myGender = "女"  //因为myGender是用let修饰的

//定义变量

var carName = "BMW"

carName = "Audi"  //因为carName是用var修饰的

//Swift定义变量或者常量的时候,需要标识出变量或者常量的类型,如果不标识,会根据初始值自动的推断。

let name = "Jack"  //会自动推断为String,由后面的值来决定name的类型

//let name:String = "Jack"//由前面的类型String,决定后面赋什么类型的值.即后面值的类型要和String一致

let age:Int = 3  //注意:如果是使用let修饰,必须赋初值;如果是使用var修饰,可以不赋初值

var age1:Int? //'?'表示当前age1是可选类型,其值可以为空

print(age1)

//定义一个字符类型的变量

var char:Character = "A" //此时char就是一个字符,切记其值也是用""的,只能放一个字符

//定义一个Bool类型的变量(值只有true,flase)

var flag:Bool = true

/***** 字符串String******/

//(1).创建一个空串变量

var str_empty = ""

var str1_empty = String()

//(2).通过字符串对象的isEmpty方法判断是否为空

if str_empty.isEmpty{  

//if 后面的判断条件(表达式,方法..)的返回值,必须是Bool类型的    

print("str_empty is empty!!")

}

//(3).拼接字符串

var str_url = "http://"var

str = "www.lanou3g.com"

let urlString = str_url+strprint(urlString)

print("蓝鸥官网:\\(urlString)\\n")//插入式取值 \\(变量名)

//(4).获取字符串长度

var str1:String = "abc"

print(str1.characters.count)

//(5).字符串插值

let mul = 4

let content = "\\(mul)*2.5 = \\(Float(mul)*2.5)"

print(content)

//(6).字符串比较

let str2 = "xiaoxiao"

let str3 = "lanou"

if str2 != str3{  // ==    

print("两个字符串不相等!!!")

}

/***********数组(Array)********/

//Swift的数组里面存储的所有数据 都必须是同一类型的。如果需要使用不同类型的,可以使用OC的数组

//定义一个数组变量

var nameArray = ["张三","李四","王五"]

var nameArray1:Array= ["张三","李四","王五"

]let array = Array()  //定义一个字符串型空数组

var int_arr = [Int]() //定义一个整型空数组

//访问数组中某个元素

print("第二个元素\\(nameArray[1])")

print(nameArray[0])

//向数组中添加一个元素

var int_arr1 = [Int]()int_arr1.append(10)int_arr1.append(20)

// 使用运算符重载向数组中添加一个元素

int_arr += [1]// 使用运算符重载向数组中添加多个元素

int_arr += [1, 2, 3]print(int_arr1)//在数组中的某个位置,插入一个元素

int_arr1.insert(30, atIndex: 0)print(int_arr1)//移除数组中某个位置上的元素

int_arr1.removeAtIndex(2)print(int_arr1)//移除数组中所有元素

int_arr1.removeAll()print(int_arr1)

/***********字典(Dictionary)*******/

//定义一个字典变量var dictionary:Dictionary= ["a":10,"b":20]//定义个空字典变量var dictionary1:Dictionary= [:]var dictionary2 = Dictionary()

//向字典中添加一个键值对

dictionary["c"] = 30

print(dictionary)

//修改字典中某个键值对的值

dictionary["a"] = 50

print(dictionary["a"])

//删除字典中的一个键值对

dictionary.removeValueForKey("a")

print(dictionary)

/***************元组*****************/

//定义一个元组变量

//方法一:直接初始化一个元组,通过隐式类型推断确定每一个元素的类型

let status = ("蓝鸥1班",["iOS","Html5"])

//方法二:显示的标识出元素的类型

let statusNews:(String, Array) = ("蓝鸥1班",["iOS","Html5"])

//取出元祖中的值的方法:

//方法一:直接赋值给常量,并通过使用标记名来获取对应的值

let statu:(classroom:String,course:Array) = status

var classInfo = statu.classroom + statu.course[0] + statu.course[1]

print(classInfo)

//方法二:直接通过下标获取元素的值

var classInfos = statu.0 + statu.1[0] + statu.1[1]

print(classInfos)

print(classInfos)

status

/*************循环********/

//extension

//第一种形式:

for var i = 1; i<10;i++

{

print(i)

}

//第二种形式:

for number in 1..<10{

print(number)

}

//第三种形式:

for number in 1...10{

print(number)

}

//while,repeat...while

var i = 5

while i > 0{

i--

print(i)

}

repeat{       //先执行循环体,再判断条件

print("repeat...while")

}while 1<0

//使用for循环遍历数组

var animalsArray = ["dog","cat","tiger","pig"]

for a in animalsArray

{

print(a)

}

//使用for循环遍历字典

var animalsArray1 = ["dog":"","pig":""]

for (key,value) in animalsArray1{

print("key = \\(key),value = \\(value)")

}

/********分支结构(if...else,switch...case)******/

//if结构

let flag1 = true

if flag1 == true

{

print("flag=\\(flag1)")

}else{

print("flag=\\(flag1)")

}

//switch...case

//特点1: switch中实现贯穿,使用关键字fallthrough

let value = 0

switch value{

case 0:

print("0")

fallthrough

case 10:

print("10")

fallthrough

default:

print("Other")

}

//特点②: case后面可以是一个范围

switch value{

case 0..<10:

print("范围是在0..<10,不包括10")

case 10...100:

print("范围是在10...100,包括100")

default :

print("Other")

}

//特点③: case后面可以定义一个变量(let,var修饰都可以),where后面是定义这个变量需要满足的条件

switch value {

case var i where value>=0 && value<10:

i = 20

print(i)

default:

print("Other")

}

//特点4: switch...case可以匹配一个元组

let point = (10,10)

switch point{

case (_,10):       // '_'代表忽略

print("case1") //默认带有break

case (10,0):

print("case2")

case (10,10):

print("case3")

default:

print("Other")

}

/*********枚举(enum)**********/

//原始类型是Int型的枚举

enum Direction:Int

{

case east = 0

case south = 1

case north = 2

case west  = 3

}

print(Direction.east.rawValue) //rawValue打印原始值

//原始类型是String型的枚举

enum Season:String{

case spring = "春天"

case summer = "夏天"

case winter = "冬天"

}

print(Season.summer.rawValue)

//Direction(rawValue:2)表示:通过原始值2,获取一个枚举成员,这个成员的类型是Direction

//dir 类型为 Direction? 值为 Direction.north

let dir = Direction(rawValue: 2) //表示取的是原始值为2那个别名(north)

dir?.rawValue

print(dir)

print(Direction.south.rawValue)

/*********函数********/

//表示函数的关键字 func

//函数的类型分为:四种

//1.无返回值 无参

func function1() -> Void{

print("无返回值,无参")

}

function1()

//2.无返回值 有参

func function2(name str:String) ->Void{

print(str)

}

//function2("蓝鸥")

function2(name: "蓝鸥")

//3.有返回值无参

func function3() -> String{

return "Hello"

}

let string = function3()

print(string)

//4.有返回值有参

func function4(a:Int ,b:Int) ->Int

{

return a+b

}

let result = function4(3, b: 4)

print(result)

//5.函数的返回值为元组类型(利用元组实现函数返回多个值)

func sumMulMinus(number1:Int,_ number2:Int) ->(Int,Int,Int){

return(number1 + number2,number1 * number2,number1 - number2)

}

//

//sumMulMinus(5, number2: 2)

sumMulMinus(5, 2)

//内部参数和外部参数

//内部参数名:在函数内部使用的参数名称

//外部参数名:在函数调用时候,显示的参数名称

//默认情况下,函数的第一个参数,不显示外部参数名,其余参数,显示外部参数名,并且和内部参数名一致

func  text(first one: Int,second two: Int){

print(one, two)

}

text(first: 10, second: 10)

//如果不想要显示外部参数名,使用“_”忽略掉

func text1(one : Int, _ two : Int) {

print(one, two)

}

text1(10, 20)

// inout参数

// 参数默认是常量:let

// 在参数前面添加var修改,就可以修改参数

// 如果参数使用inout来修饰,就成了输入输出参数,在函数内部修改参数,可以影响外部变量的值

func test8(inout name: String) {

name = "LIZE"

print(name)

}

var myName = "lize"

test8(&myName)

print("myName: " + myName)

// 参数前面用var修饰,修改参数

func test9(var name : String) {

name = "LIDAZE"

}

//函数嵌套

func test1(){

func test2(){

func test3(){

print("test3")

}

test3()

print("test2")

}

test2()

print("test1")

}

test1()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容