Swift 练习

import Foundation

println("Hello, World!")

let floatValue:Float = -1.3
let intValue = 1234 + Int(floatValue)

NSLog("intValue = %d", intValue);

typealias MyInt = Int16

println("MyInt的最小值是:\(MyInt.max)")

let numOfCourse:MyInt = 200

println("课程数量:\(numOfCourse)");


let b : Bool = false,  b1 : Bool = true

println("b is :\(b) -- b1 is \(b1)")

//元组
var classInfo = (className:"ios1309",classId:"20150302",classNum:50)

println("班级名称 is \(classInfo.className), 班级编号 is \(classInfo.classId), 班级人数 is \(classInfo.classNum)")

var (name , id , num) = classInfo

println("班级 is \(name) ,编号 is\(id), 人数 is \(num)")

let (className ,_ ,_) = classInfo

println("班级名称 is \(className)")

//可选类型
var str : String? = "123"

if str != nil
{
    println(str)
    println(str!.toInt())
}
else
{
    println(str)
}


let str1 : String = "Hello", str2 : String = " World"
let str3 = str1 + str2

println(str3)


var age = 10

if age < 0
{
    println("年龄不合法")
}

//三目运算符
println(age < 0 ? "年龄不合法":"年龄值合法\(age)")

//区间运算符 - 闭区间
for a in 0...5
{
    println(a)
}
println("---------------")
//- 半闭区间
for a in 0 ..< 5
{
    println("\(a)")
}

var sex = "male"
if age < 18 && sex == "male"
{
    println("boy")
}

let distance = 1
assert(distance >= 0, "两点的距离不能小于0")

var str5 = "ios, @%^&&*(你好gniogier"

println("字符的数量:\(countElements(str5))")

var str6 : String = "12.1"
let ns: NSString = str6

let d = ns.doubleValue

println(d)

var intList = [12,35,56]

var intList2 : [Int]
intList2 = []
intList2.append(1245)
println(intList2)

var doubleList:[Double] = []
doubleList.append(151)
println(doubleList)

var list = [Int]()
list.append(13)


var list1 = [Int](count: 5, repeatedValue: 4)

for n in list1
{
    println(n)
}

var list2 = Array(count: 3, repeatedValue:"hello")

for b in list2
{
    println(b)
}

var list3 = ["hello","swift","学习","欢迎"]
println("第一个元素 is :\(list3[0])")
println("第二个元素 is :\(list3[1])")
println("元素的个数 is :\(list3.count)")



var list4 : [String] = []
if list4.count == 0
{
    println("数组是空的")
}

if list4.isEmpty
{
    println("数组果然是空的")
}

list3[3] = "iOS开发"
println(list3)

list3[0...2] = ["曹操","刘备","孙权"]
println(list3)

var dic1 = [1:1,2:2,3:3]
println(dic1.count)

var dic2 :Dictionary<String,String> = [:]

var dic3 = Dictionary<String,String>()

var dic4 = [String:String]()


var dic = ["key1":"iOS","key2":"Swift","key3":"Android"]
var dicStr = dic["key2"]
println(dicStr)

var strNotExists = dic["key"]
println(strNotExists)

dic["key"] = "Objective-C"
println(dic)

//修改字典
dic["key"] = "OC"
println(dic)

let dicStr1 = dic.updateValue("Objective-c", forKey: "key2")

println(dic)

for (key ,value) in dic
{
    println("key:\(key)","value:\(value)")
}

for str7 in dic.keys
{
    println(str7 + "")
}

var keys = Array(dic.keys)
println(keys)

for str8 in dic.values
{
    println(str8 + "")
}

var values = Array(dic.values)
println(values)

/*
 * 控制语句和函数
 */
var age1 = 10
if age1 > 18
{
    println("他已经是成年人")
}
else if age1 > 12
{
    println("少年")
}
else if age1 > 3
{
    println("童年")
}
else
{
    println("幼年")
}

//switch
var mode = "飞行"
switch mode
{
case "户外":
    println("现在为户外模式,音量最大")
case "飞行":
    println("现在为飞行模式,电话无法接通")
case "静音":
    println("现在为静音模式,没有声音")
default:
    println("其他")
}

var age3 = 3
switch age3{
case 0...3:
    println("幼年")
case 3...12:
    println("童年")
case 12...17:
    println("少年")
case 18...200:
    println("成年")
default:
    println("该年龄值不合法")
    
}

//元组  用小括号
let boy = (10 ,"boy")
switch boy
{
case (0...20 ,"boy"):
    println("男孩")
case (21...100 ,"man"):
    println("男人")
default:
    println("其他")
}

let woman = (10,"gril")
switch woman
{
case (let age , "boy"):
    println("男孩:\(age)")
case (let age, "man"):
    println("男人:\(age)")
case (let age, let sex):
    println("年龄:\(age),性别:\(sex)")
    
}


let boy2 = (50,"man")

switch boy2
{
case let (age,sex) where age < 12 && sex != "boy" && sex != "man":
    println("女孩:\(age)岁")
case let (age,sex) where age > 12 && sex == "man":
    println("男人:\(age)")
case let (age,sex):
    println("\(sex):\(age)")
}


//循环结构
var sum = 0
for var i = 1; i <= 100; i++ {
    sum += i;
    }
println("sum : \(sum)")

//for in
var sum1 = 0
for i in 1...100
{
    sum1 += i
}
println(sum1)

//遍历数组
var strArray = ["Swift","Objective","Java"]
for str9 in strArray
{
    print(str9 + " ")
}

//while
var sum3 = 0
var i = 0
while i <= 100{
    sum3 += i
    i++
}
println("sum3 = \(sum3)")


//do-while
var sum4 = 0
var j = 0
do{
    sum4 += j
    j++
}while j <= 100

println("sum4 = \(sum4)")

var strArray1 = ["Hello","Swift","iOS","Java"]
//for str in strArray1{
//    if str.hasPrefix("S")
//    {
//        continue
//    }
//    print(str + " ")
//}

for str in strArray1
{
    if str.hasPrefix("S")
    {
        break
    }
    println(str + " ")
}

//fallthrough
let boy3 = (1 ,"boy")
switch boy3
{
case (0...20 ,"boy"):
    println("男孩")
    fallthrough
case (2...100 ,"man"):
    println("男人")
    fallthrough
default:
    println("其他")
}


//函数
func address(a:Int,b:Int) -> Int
{
    return a + b
}

println("address = \(address(12,36))")

var sum5 = address(34, 40)
println(sum5)

var num1 = 12, num2 = 34, num3 = 40

var sum6 = address(num1, address(num2, num3))

println("sum6 = \(sum6)")


//无参函数
func showWarnint()
{
    println("警告")
}

showWarnint()

//带参函数
func showWarning(str:String)
{
    println("警告:" + str)
}

showWarning("内存不足")

//参数标签
func showStudentInfo(sName name:String, sAge age:Int, sHeigh heigh:Int, sPhoneNum phoneNum:Int)
{
    println("学生:\(name) 年龄:\(age) 身高:\(heigh) 电话:\(phoneNum)")
}

showStudentInfo(sName: "张三", sAge: 23, sHeigh: 176, sPhoneNum: 13723561245)

func showStudentInfo(#name:String, #age:Int, #heigh:Int, #phoneNum:Int)
{
    println("学生:\(name) 年龄:\(age) 身高:\(heigh) 电话:\(phoneNum)")
}

showStudentInfo(name: "李四", age: 28, heigh: 180, phoneNum: 13526453212)

//最大公约数
func greatestCommonDivisor(var a:Int,var b:Int) -> Int
{

    var localC = a % b
    
    while localC != 0
    {
        a = b
        b = localC
        localC = a % b
    }
    return b
    
}
println(greatestCommonDivisor(72,68))

func leaseCommonMultiple(a:Int, b:Int) -> Int
{
    return a * b / greatestCommonDivisor(a, b)
}

func getResOf(#a:Int, #b:Int, funcAction:(Int,Int) -> Int) -> Int
{
    return funcAction(a,b)
}

println(getResOf(a:12,b:16,leaseCommonMultiple))


//函数的嵌套
func someCalcAction(#a:Int, #b:Int, #type:Int) -> Int
{
    func greatestCommonDivisor(var a:Int,var b:Int) -> Int
    {
        var c = a % b
        while c != 0
        {
            a = b
            b = c
            c = a % b
        }
        return b
    }
    
    func leaseCommonMultiple(a:Int, b:Int) -> Int
    {
        return a * b / greatestCommonDivisor(a, b)
    }
    
    //根据type的值返回相应的结果,0表示最大公约数,1表示最小公倍数
    switch type
    {
    case 0:
        return greatestCommonDivisor(a, b)
    case 1:
        return leaseCommonMultiple(a, b)
    default:
        -1
    }
    return -1
}

println(someCalcAction(a:12,b:16,type:0))

println(someCalcAction(a:12,b:16,type:1))

println(someCalcAction(a:12,b:16,type:2))

//枚举
enum toward : Int {
    case forward = 10
    case back
    case left = 30
    case right = 40
}

enum Toward:Int {
    case Forward, Back, Left, Right
}

let goto = toward.back
println(goto.rawValue)

//指定枚举为String类型
enum Toward1: String
{
    case forward = "f", Back = "b", Left = "l", Right = "r"
}

println(Toward1.forward.rawValue)
println(Toward1.Back.hashValue)

//例如:按钮的枚举
enum TouchEvent
{
    case TouchUpinSide
    case TouchDown
    case TouchDoubleClick
}
//定义一个事件,并指定其类型为TouchEvent
var event:TouchEvent
//定义event的事件类型为单击
event = TouchEvent.TouchUpinSide
//处理事件
switch event
{
case .TouchUpinSide:
    println("按钮被点击啦")
case .TouchDown:
    println("按钮被按下")
case .TouchDoubleClick:
    println("按钮被双击")
default:
    println("其他")
}

//结构体
struct Student
{
    var stuId:Int;
    var stuName:String
    var stuSex:Bool
    var stuPhone:String
}

struct student {
    var stuid = 0
    var stuname = ""
    var stusex = true
    var stuphone = ""
}

//空的构造方法
var zhang = student()
println(zhang)

var xiaoLi = Student(stuId: 2014050902, stuName: "李雷", stuSex: true, stuPhone: "1380000000")

println(xiaoLi.stuId)

var Perry = student()
Perry.stuname = "涩涩的小丑"
println(Perry.stuname)


//结构体嵌套
struct Teacher{
    var tId = 0
    var tName = ""
}

struct ClassRoom {
    var classId = 0
    var className = ""
    var classCharge = Teacher() //班主任
}

struct Student2 {
    var stuId = 0
    var stuName = ""
    var stuSex = true
    var stuPhone = ""
    var classInfo = ClassRoom()
}

var zhao = Student2()
zhao.stuName = "赵敏"
zhao.classInfo.className = "iOS开发"
zhao.classInfo.classCharge.tName = "张三丰"

println("学生:\(zhao.stuName) 所在班级:\(zhao.classInfo.className) 班主任是:\(zhao.classInfo.classCharge.tName)")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值