Swift 学习 --- 基础<二>

// Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

//------------------------- 类和结构体的相同与不同 -------------------------

//*************************

// 结构体和类的相同点, 在swift中,struct被强化

// 1. 都可以定义属性

// 2. 定义方法

// 3. 定义init (构造器)

// 4. 可以延展

// 5. 可以遵守协议

//*************************

// 不同点

// 1.结构体是值类型,类是引用类型

// 2.类是可以被继承的

// 3.类可以使用类型推断 isKindOfClass --- is

// 4.类可以使用deinit(析构器)

// 5.一个类可以有多个引用

//------------------------- 结构体 -------------------------

struct Resolution {

// 定义属性

var height = 0

var width = 0

}

// 输入完名称后,打半括号,就会有提示(结构体)

var resolution = Resolution(height: 20, width: 20)

class Video {

// 类的一个属性 (此处将一个结构体定义为该类的属性)

var resolution2 = Resolution(height: 20, width: 20)

var frameRate = 0.1

}

// 引用类型和值类型的区别

// 在类中,定义一个指针指向之前的实例,是指向同一块内存, 对原值进行修改

// 但是在结构体中,是开辟了一块新的空间,这样做,不会对原值造成任何影响

var newResolution = resolution

newResolution.height = 100

resolution

newResolution

// 类 指针指向原值,是同一块内存,所以,原值被修改

var video = Video()

video.frameRate = 0.2

var video1 = video

video1.frameRate = 0.5

video.frameRate

struct ResolutionA {

var height: Int

var width: Int

// 构造器

init (Height: Int, Width: Int) {

// 自动生成 self.

self.height = Height

self.width = Width

}

}

class VideoA {

var resolutionA = ResolutionA(Height: 100, Width: 100)

var frameRateA : Double

// 构造器

init(frameRate : Double){

self.frameRateA = frameRate

}

}

// 构造器,结构体会自动生成构造器方法,类不会

var videoA = VideoA(frameRate: 0.2)

videoA.resolutionA.height = 120

videoA.resolutionA.height

/**

*  属性 : 属性分为两种, 计算属性 / 存储属性

*/

// 存储属性是在类和结构体重

// 存储属性是存储在类和结构体重的常量或者变量 计算熟悉纪念馆,就是本身不会进行存储, 它是提供setter 和 getter 方法,简洁设置属性的值

struct Point {

var x = 0

var y = 0

}

struct Size {

var height = 20

var width = 20

}

struct Rect {

// point 和 size 是存储属性

var point = Point(x: 0, y: 0)

var size = Size(height: 20, width: 20)

// 计算属性, 通过point size 的值来计算center

var center: Point {

get {

// 计算属性的get方法

let centerX = point.x + size.width/2

let centerY = point.y + size.height/2

return Point(x: centerX, y: centerY)

}

set {

// 默认newValue, 如果我们不给他名字, 就会叫 newValue

let x = newValue.x - size.width/2

let y = newValue.y - size.height/2

point.x = x

point.y = y

}

}

// 写一个方法 在常规方法中,是不能实现体内部改变本身属性的值的,需要在方法前加"mutating"

mutating func hello () {

println("hello")

self.point = Point(x: 100, y: 100)

}

// 静态方法 类似类方法

static func hello2() {

println("hello2")

}

}

var rect = Rect()

rect.center

rect.point

rect.center = Point(x: 20, y: 20)

rect.center

rect.point

rect.size = Size(height: 40, width: 40)

rect.center

rect.point

// 调用结构体方法

rect.hello()

// 静态方法调用

Rect.hello2()

// -------------------------------- 枚 举 ----------------------------------

enum PersonIndentity: String {

case Teacher = "Teacher"

case Student = "Student"

}

// ------------------------------- 类 ----------------------------------

class Person {

var indentify: PersonIndentity?

let someValue: Int

var name: String

var sex: String

// 类的构造器

init(someValue: Int, name: String, sex: String, idd: PersonIndentity){

self.someValue = someValue

self.sex = sex

self.name = name

self.indentify = idd

}

deinit {

}

func hello(){

println("hello")

self.name = "world"

}

// 类方法, 类比于 + 方法 加"class"关键字

class func hello2(){

println("hello2")

}

// 类型属性 只能是计算属性 如果只有getter方法, 那么他就是只读的

class var home: String {

get{

return "地球"

}

}

}

// 枚举赋值 PersonIndentity.Student PersonIndentity 可以省略 (因为具备类型推断功能) 写成

// .Student

var student = Person(someValue: 20, name: "Ammy", sex: "f", idd: PersonIndentity.Student)

student.hello()

Person.hello2()

// 类型属性页只能用类调用

Person.home

student.indentify?.hashValue

student.indentify?.rawValue

import UIKit

var str = "Hello, playground"
//------------------------- 类和结构体的相同与不同 -------------------------
//*************************
// 结构体和类的相同点, 在swift中,struct被强化
// 1. 都可以定义属性
// 2. 定义方法
// 3. 定义init (构造器)
// 4. 可以延展
// 5. 可以遵守协议

//*************************
// 不同点
// 1.结构体是值类型,类是引用类型
// 2.类是可以被继承的
// 3.类可以使用类型推断 isKindOfClass --- is
// 4.类可以使用deinit(析构器)
// 5.一个类可以有多个引用

//------------------------- 结构体 -------------------------

struct Resolution {

    // 定义属性
    var height = 0
    var width = 0
}

// 输入完名称后,打半括号,就会有提示(结构体)
var resolution = Resolution(height: 20, width: 20)

class Video {
    // 类的一个属性 (此处将一个结构体定义为该类的属性)
    var resolution2 = Resolution(height: 20, width: 20)
    var frameRate = 0.1
}

// 引用类型和值类型的区别
// 在类中,定义一个指针指向之前的实例,是指向同一块内存, 对原值进行修改
// 但是在结构体中,是开辟了一块新的空间,这样做,不会对原值造成任何影响

var newResolution = resolution
newResolution.height = 100
resolution
newResolution

// 类 指针指向原值,是同一块内存,所以,原值被修改
var video = Video()
video.frameRate = 0.2
var video1 = video
video1.frameRate = 0.5
video.frameRate

struct ResolutionA {
    var height: Int
    var width: Int

    // 构造器
    init (Height: Int, Width: Int) {

        // 自动生成 self.
        self.height = Height
        self.width = Width
    }
}

class VideoA {
    var resolutionA = ResolutionA(Height: 100, Width: 100)
    var frameRateA : Double

    // 构造器
    init(frameRate : Double){
        self.frameRateA = frameRate
    }
}

// 构造器,结构体会自动生成构造器方法,类不会
var videoA = VideoA(frameRate: 0.2)
videoA.resolutionA.height = 120
videoA.resolutionA.height

/**
*  属性 : 属性分为两种, 计算属性 / 存储属性
*/

// 存储属性是在类和结构体重
// 存储属性是存储在类和结构体重的常量或者变量 计算熟悉纪念馆,就是本身不会进行存储, 它是提供setter 和 getter 方法,简洁设置属性的值

struct Point {
    var x = 0
    var y = 0
}

struct Size {
    var height = 20
    var width = 20
}

struct Rect {
    // point 和 size 是存储属性
    var point = Point(x: 0, y: 0)
    var size = Size(height: 20, width: 20)

    // 计算属性, 通过point size 的值来计算center
    var center: Point {
        get {
            // 计算属性的get方法
            let centerX = point.x + size.width/2
            let centerY = point.y + size.height/2
            return Point(x: centerX, y: centerY)
        }

        set {
            // 默认newValue, 如果我们不给他名字, 就会叫 newValue
            let x = newValue.x - size.width/2
            let y = newValue.y - size.height/2
            point.x = x
            point.y = y

        }
    }

    // 写一个方法 在常规方法中,是不能实现体内部改变本身属性的值的,需要在方法前加"mutating"
    mutating func hello () {
        println("hello")
        self.point = Point(x: 100, y: 100)
    }

    // 静态方法 类似类方法
    static func hello2() {
        println("hello2")
    }
}

var rect = Rect()
rect.center
rect.point

rect.center = Point(x: 20, y: 20)
rect.center
rect.point

rect.size = Size(height: 40, width: 40)
rect.center
rect.point

// 调用结构体方法
rect.hello()
// 静态方法调用
Rect.hello2()

// -------------------------------- 枚 举 ----------------------------------

enum PersonIndentity: String {
    case Teacher = "Teacher"
    case Student = "Student"
}

// ------------------------------- 类 ----------------------------------

class Person {
    var indentify: PersonIndentity?
    let someValue: Int
    var name: String
    var sex: String

    // 类的构造器
    init(someValue: Int, name: String, sex: String, idd: PersonIndentity){

        self.someValue = someValue
        self.sex = sex
        self.name = name
        self.indentify = idd

    }

    deinit {

    }

    func hello(){
        println("hello")
        self.name = "world"
    }

    // 类方法, 类比于 + 方法 加"class"关键字
    class func hello2(){
        println("hello2")
    }

    // 类型属性 只能是计算属性 如果只有getter方法, 那么他就是只读的
    class var home: String {

        get{
            return "地球"
        }

    }
}

// 枚举赋值 PersonIndentity.Student PersonIndentity 可以省略 (因为具备类型推断功能) 写成
// .Student
var student = Person(someValue: 20, name: "Ammy", sex: "f", idd: PersonIndentity.Student)

student.hello()
Person.hello2()

// 类型属性页只能用类调用
Person.home
student.indentify?.hashValue
student.indentify?.rawValue
时间: 2024-10-16 12:28:03

Swift 学习 --- 基础<二>的相关文章

Swift学习:基础部分(The Basics)

Swift 是一门开发 iOS macOS watchOS  和 tvOS 应用的新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现Swift 的很多内容都是你熟悉的. Swift 包含了 C 和 Objective-C 上所有基础数据类型, Int 表示整型值: Double 和 Float 表示浮点型值: Bool 是布尔型值: String 是文本型数据. Swift 还提供了三个基本的集合类型, Array , Set 和 Dictionary ,详见集合类

Swift 学习 --- 基础&lt;一&gt;

// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" print("A"); print("A") // 如果同一行有有段代码用 ';'隔开 // 默认自带换行符 println("Alice"); println("Peter"); println("Tommy

Swift学习——Language Guide 基础

The Basics Swift is a new programming language for iOS and OS X app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift是用于开发IOS和Mac OS系统应用的新的编程语言,如果你曾经使用过C或者OC开发IOS程序,那你会发现他们和S

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

Swift学习——Swift基础详解(四)

A:小儿编程很不好! B:多半是不爱学,从看英文版开始,让你爱上编程! Type Aliases    类型重定义(typedef) Swift中重定义类型的关键字是typealias,至于怎么用,应该不必多说了,看例子: typealias AudioSample = UInt16 //定义了一个类型名称AudioSample,代表UInt16类型 var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0 Boo

Swift学习——Swift基础详解(一)

注:由于基础部分在Swift Tour 中已经大体的说明了,所以在详解中不会达到100%的原文释义 Constants and Variables  常量和变量 常量和变量都需要声明名称和类型(作为程序员,这些基础也就不说了),常量一次赋值不能改变,变量的值可以改变 Declaring Constants and Variables   声明常量和变量 常量和变量在使用之前必须要声明,使用let关键字定义常量,var关键字定义变量 下面的例子可以用来定义用户登录的时候最大的尝试次数: let m

swift学习_xcode基础学习

android L已经在开发大会上公布了, 技术得跟上时代的潮流, 一心想在移动互联网中发展,只好努力学习 html+ js  ,  oc ! 服务器运维我就不写了,就算是自己的生活记录.android 说真心话, 一直想写,结果发现自己很喜欢写得连续点,就像仙剑一样, 应该是能让人回味的那种,文笔不好 , 就先这些基础开始练习吧. 发呆中..... 上一个教程中 xcode6  安装后,打开xcode开始界面,我突然发现 get start playground , 一直在犹豫他是神马....

Swift学习——Swift基础详解(二)

上节说了没有营养的变量和常量,这玩意,都差不多,自己稍微看下就好了 Integers    整型 整数就是整数了,没有小数,整数有符号(+,-,0)或者无符号(0,+) Swift提供了8,16,32,64位的有符号和无符号的整数,命名使用C的方式,比如,8位无符号的整型UInt8,32位有符号的整型就是Int32 Integer Bounds    整型范围 可以使用min 和 max获取整数类型的最大值和最小值 let minValue = UInt8.min // minValue is

Swift学习 --- 2.1基础部分

1.swift 可以省去; 2.println与print的区别就是一个可以换行一个不可以 3.swift省去了.h与.m 直接一个swift文件 4.元组可以返回多个值,元组(tuples)把多个值组合成一个复合值.元组内的值可以使任意类型,并不要求是相同类型,你可以将一个元组的内容分解(decompose)成单独的常量和变量,然后你就可以正常使用它们了: let (statusCode, statusMessage) = http404Error println("The status co