Swift学习笔记二(类、函数、结构)

本文介绍Swift语言的基础知识,包括结构体和类的定义与使用,并通过一个树形结构的例子展示了如何创建节点及遍历整个树。
写得有点粗糙凑合着看吧。 
 
//  main.swift
//  Class
//
//  Created by fuyun on 14-9-8.
//  Copyright (c) 2014年 fuyun. All rights reserved.
  
import Foundation
/* 熟悉类、函数、结构的基本使用*/ 
  struct Data{ //使用STRUCT定义结构,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。
    var data:String=""
        init (p_data:String){
        data=p_data
    }
    func getData(){
        println(data)
    }
    
class Tree { //使用CLASS来定义类,拥有继承\运行时检查与转换
    var data:Data
    var parentNode:Tree?
    var childNode:[Tree?]=[nil]
    var level:Int=0
    init (p_data:Data){ //构造函数初始化
          data=p_data 
func append(p_str:String)->Tree?{ //func用来定义实例方法,它是属于某个特定类、结构体或者枚举类型实例的方法
         var t:Tree?=Tree(p_data: Data(p_data: p_str))
         childNode.append(t)
         t!.parentNode=self
         t!.level=t!.level+level+1
         return t
          
}   
func getParentNode()->Tree?{ //获得父节点
        if parentNode===nil{
           println("Object is empty.")
        }else{
         return parentNode
        }
        return nil
    
func getNextNode()->[Tree?]{ //获得子节点
        if childNode.isEmpty{
            println("Object is empty.")
        }else{
            return childNode
        }
        return [nil] 
    }
func Repeat(p_count: Int,p_reStr:String,p_sourctStr:String)->String{ //inout输入输出
    var str:String=""
    if p_count==0 {
        return p_sourctStr
    
    for i in 0...p_count   {
        str=p_reStr+str
    
    return str+p_sourctStr
func getAllNode(p_rootNode:Tree?){
    if p_rootNode != nil {
        println(Repeat(p_rootNode!.level," ","")+"|"+Repeat(p_rootNode!.level,"-",p_rootNode!.data.data))
         for v in p_rootNode!.childNode{
                if v? != nil {
                  getAllNode(v!)
                }
        }
    }
//--------------------------------------------------------------- 
var root=Tree(p_data: Data(p_data: "Ⓐ")) //根节点
//添加一级子节点
for v in 1...2{ 
    var node=root.append("1."+String(v))
    for v2 in 1...3{
        var node2=node!.append("2."+String(v2))
    }
}
//添加同级子节点
var node=root.append("Ⓑ")
for v in 1...2{ 
    var node2=node!.append("1."+String(v))
    for v3 in 1...3{
        var node3=node2!.append("2."+String(v3))
    }
getAllNode(root) 
 /* 
Swift 中类和结构体有很多共同点。共同处在于: 
定义属性用于储存值
定义方法用于提供功能
定义附属脚本用于访问值
定义构造器用于生成初始化值
通过扩展以增加默认实现的功能
符合协议以对某类提供标准功能 
与结构体相比,类还有如下的附加功能: 
继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
解构器允许一个类实例释放任何其所被分配的资源
引用计数允许对一个类的多次引用
*/
输出:
|Ⓐ
  |--1.1
   |---2.1
   |---2.2
   |---2.3
  |--1.2
   |---2.1
   |---2.2
   |---2.3
  |--Ⓑ
   |---1.1
    |----2.1
    |----2.2
    |----2.3
   |---1.2
    |----2.1
    |----2.2
    |----2.3
Program ended with exit code: 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值