首页 > 编程语言 > 详细

swift学习基础代码1

时间:2015-11-18 14:23:05      阅读:276      评论:0      收藏:0      [点我收藏+]

//swift里面字符串不需要添加@符号
var str = "Hello, playground"
// 常量
// 用let声明一个常量,常量不可以修改
let number : Int32 = 15
//number = 14

// 变量
// 用var声明变量,可以修改变量
var number2 : Int32 = 22;
number2 = 21

// 分号
// 在swift里面可以省略分号,但是有一种情况下不能省略(多条语句放在同一行的时候不能省略)
var number3 = 13; var number4 = 14

// 在swift里面声明常量或者变量的格式是: 常(变)量修饰符 常(变)量名 : 常(变)量类型 = 常(变)量值
// 在swift里面我们声明变量或常量的事后可以省略它的类型,系统会根据我们给的值的类型去推断这个常量或者变量的类型



// 字符串
// 在Swift里方法的调用全部都是通过.来完成,很多方法名都是和OC,UI方法名一样,支持运算符重载,,比如一个"+",如果+ 的两边是数字,+的作用就是给两个数字做加法运算,如果是字符串,及时拼接两个字符串,编译器会根据运算符两边的内容不同,然后做相应的操作就是运算符的重载
var string = "Hello"

string.appendContentsOf(" World")
string += " Hehe"
// Swift支持中文或者表情符号来命名变量,它支持几乎所有的uncode的编码
// 等号的左右两边的空格要对称
var 哈哈 = "haha哈"
哈哈

var 技术分享 = "你好"
技术分享 + 哈哈
// print可以打印一个变量或者常量,也可以直接打印字符串,在打印的字符串中添加变量需要用\(变量名)
print(哈哈,技术分享,number2)

print("1244\(哈哈)6")

// 在做类型推断的时候如果给的是一个小数,系统会自动推断double类型而不是float
var number5 = 13.6

// Swift里面对int类型做详细的区分,分为Int32 ,Int64,Int8等,我们可以根据实际情况选择不同的类型以节省空间
var number6 : Int64 = 4
// 疑问:系统自动推断Int类型是Int8还是Int32还是Int64
// Swift里面拒绝隐式转换,即不能给两个不同数值类型的变量做符好运算
Int(number5) + number6

// 数组
// 和OC的数组不同,swift里面的数组可以存储数值类型,并且swift里面的数组是有类型的,类型是根据存储的内容来推断数组的类型.如果数组里面有多种类型,系统会自动推断为NSObject类型
var array1 = [1, 2 , 3]
array1[1]
// 可以通过append方法添加元素,添加的位置是最后一个
array1.append(5)
// 给数组指定下标的位置插入元素
array1.insert(0, atIndex: 1)
// 可以移除元素,根据下标,第一个,最后一个
array1.removeLast()
print(array1)
// 数组也可以直接相加,会把两个数组合并在一起
var array2 = [7,8]
array2 += array1

//字典
// 字典和OC相比从{}编程[]
var dic1 = ["name" : "wang", "age" : 4]
// 字典的取值是通过键值来取的
dic1["name"]
// 和OC一样,可以直接对某个键对应的值修改,如果没有这个键就新建一个键值对
dic1["number"] = 12345

for number in array1
{
    print(number)
}
// 遍历一个字典的时候和OC是有区别的,swift遍历字典返回的是一个元组类型,我们可以通过下标0和1渠道对应的见和值
for index in dic1
{
    print(index.1)
}


//元组
// 元组可以让我们自定义里面的类型
var httpError = ("request error",404)
// 元组可以通过下标来取到对应位置的值,也可以通过下标修改对应位置的值
httpError.0 = "request ERROR"
// 元组除了通过下标取值,修改,还可以给指定下标一个标记,以后通过这个标识来取值,修改
var httpError1 = (info : "request error", num : 404)
httpError1.info = "request ERROR"


// 可选类型
// 可选类型代表这个遍历可能是有值的,也可能没有值(nil),在swift里面拒绝做隐式转换,我们不能把一个可选类型赋值给一个基本类型
var strNumber : Int?
var numberStr : String  = "1234"
strNumber = Int(numberStr)
// 如果想对一个返回值为可选类型的方法标识确定(能保证这个可选类型的返回值一定不为空),可以在后面添加!,告诉编译器这个可选类型肯定有值,可以按照正常的类型来处理
var strNumber2 :Int
strNumber2 = Int(numberStr)!


//for循环跟OC里面的是一样的,不同点在于swift里面的循环不需要加小括号,但是符号两边的空格数量需要对称,自增量后面需要加空格
for var i = 0; i < 5; i++
{
    print(i)
}

var i = 0
//同意用while循环也不需要括号,但需要注意空格,while循环如果想执行一个死循环需要在判断条件的地方放一个bool值(true,false)
while i < 5
{
    print(i)
    i++
}
// if else 也不需要添加括号,写法和OC类似
if i == 10 {
    print(i)
}
else
{
    print("i != 10")
}

// switch case, 与OC用法相反,swift 里面的switch自带有break功能,我们不需要手动添加break,如果想要执行完某个case后继续下一个case,需要添加关键字fallthrough, 在选择的时候,我们可以设置一个范围,只要是满足这个范围内的数都可以执行case语句,范围可以重叠,但一个数值满足多个范围时,默认去最上面的语句执行,其他不执行

i = 3
switch i {
 case 1...4: print("1")
//    fallthrough
 case 2...5: print("2")
 default : print("ohter")
}




//函数 
//func 函数名(参数名1 : 参数类型1, 参数名2 : 参数类型2, ....)->(返回值类型)

func sayHello(name name : String) -> String {
    let str = name + " hello"
    return str
}
var helloStr = sayHello(name: "技术分享")
helloStr

// 结构体
struct Point {
    var x : Int
    var y : Int
    func hello(){
        print("haha")
    }
}
var point = Point(x: 10, y: 10)
point.x = 20
point.hello()

// 类  swift 里面的类和结构体比较相似,类和结构体都可以有自己的成员变量,方法,都可以通过点语法找到对应的成员变量或者给成员变量赋值,都可以通过点语法来调用自己的函数,不同的敌方在于类在创建的时候必须给对应的成员变量一个初值,结构体不需要
class Person {
    var name : String = ""
    var age : Int = 0
    func eat(){
        print("eat")
    }
}

var person1 = Person()
person1.name = "技术分享技术分享"
person1.age = 10
person1.eat()


// 闭包  类似OC中的block,闭包可以理解为是一个代码块,放在一个大括号中,其中大括号里面有两部分,用in分隔开,in前面部分是类型,in后面的部分是具体的实现以及闭包的返回值

var test = {
    (name : String) -> Int in
    let num = Int(name)!
    return num
}

var number11 = test("1234") 
 
 

swift学习基础代码1

原文:http://www.cnblogs.com/xiaochong1234/p/4974118.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!