`

Swift 学习笔记

阅读更多

sw i f t 作为苹果新的开发语言,相比Object-C相对好理解,项目需要因此需要学习一下,特此写下此笔记

 

Swift 学习建议参考苹果开发者中心文档:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-ID1

 

代码:

//
//  main.swift
//  swiftlearn
//
//  Created by YoungStream on 16/3/23.
//  Copyright © 2016年 mugutu. All rights reserved.
//

import Foundation

print("Hello, World!")

//定义变量
var myVar = 42
myVar = 35

var myVar2: Double = 30.345

var myStr:String = "Hello Swift!"

//定义一个常量,没有指明类型时,编译器根据初始值自动推断出myConst是一个整数
let myConst = 43
//定义一个常量并声明类型
let myConst2: Double = 30.0

let myFloat: Float = 4.0
// Int8整型常量或者变量能够存储的数值是-128到127,而UInt8整型常量或者变量能够存储的
//数值范围是0到255.当编译的时候,数值越界是不会自动得到合适的值的,而且会编译出错。
//let t1: UInt8 = -1

/*
 整型雨浮点类型的转换
*/
let three = 3
// 转换three为整型
let pi = Double(three) + 0.14569

let integer = Int(3.1415926)

print("This A Value : "+String(integer))
//array数组
var shoppingList = ["one","two","three"]

shoppingList[0] = "once again"

var occupations = [
    "one"   :"Mom",
    "two"   :"Lily",
    "three" :"Tom"
]
occupations["four"] = "Jack";

//初始化空数组
let emptyArray = [String]()
//初始化空字典
let emptyDictionary = [String:Float]()


//==Control Flow== 流程控制 if else for

let individualScores = [75,43,103,87,12]

var tempScore = 0;
for score in individualScores {
    if score > 50 {
        tempScore += 3;
    } else {
        tempScore += 1;
    }
}

var optionalString:String? = "Hello"
print(optionalString == nil)

var optionName:String? = nil
//var optionName:String? = "John Appleseed"

var greeting = "Hello!"
if let name = optionName {
    greeting = "Hello, \(name)"
} else {
    greeting = "Hello,YoungStream"
}
print(greeting)


let nickName: String? = nil
let fullName: String = "Young Stream"
let informalGreeting = "Hi \(nickName ?? fullName)"

print("infomalGreeting : "+informalGreeting)

//Switch Case
let vegetable = "red pepper"

switch vegetable {
case "celery":
    print("This is celelry")
case "cucumber","watercress":
    print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
    print("It is a spicy \(x)?")
default:
    print("Swicth Case Default Print")
}

//for each pai value
let interestingNumbers = [
    "Prime": [2,3,5,7,11,13],
    "Fibonacci": [1,1,2,3,5,8],
    "Square":[1,4,9,16,25]
]

var largest = 0

for(kind,numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
    print("key : "+kind)
}

print("The Max Value : "+String(largest))
//While Repeat

var n = 2
while n < 100 {
    n = n * 2
}
print("While N Value : "+String(n))

var m = 2
repeat {
    m = m * 4
} while m < 100

print("Repeat M Value : "+String(m))

var total = 0
for i in 0..<4 {
    total += i
}
print("For ..< Value : "+String(total))

//== Functions and Closures ==
print("=== Functions and Closures ===")

//func FunctionName(paramName:paramType ...) -> returnType {Function Body}
func greet(name:String,day:String) ->String {
    return "Hello \(name), today is \(day)."
}

print("Function greet return Value: "+greet("Bob",day:"Tuesday"))

//使用元组返回多个值
func calculateStatistics(scores:[Int]) -> (min: Int,max: Int,sum: Int) {
    var min = scores[0]
    var max = scores[0]
    var sum = 0
    
    for score in scores {
        if score > max {
            max = score
        } else if score < min {
            min = score
        }
        
        sum += score
    }
    return (min,max,sum)
}
var calcuReturn = calculateStatistics([1,2,3,4,5,6,7,8,9,10])
print("Function calculateStatistics return Value : max => "+String(calcuReturn.max)+", min => "+String(calcuReturn.0)+", sum => "+String(calcuReturn.sum))
//函数嵌套 Function Nested
func returnFifteen() -> Int {
    var y = 10
    func add() {
        y += 5
    }
    add()
    return y
}
print("Function Nested At. returnFifteen Return Value : "+String(returnFifteen()))

//Function Return Another Function
func makeIncrementer() -> ((Int) -> Int) {
    func addOne(number:Int) -> Int {
        return 1 + number
    }
    return addOne
}
var increment = makeIncrementer()

print("Return Function's Return Value : "+String(increment(7)))
//Function use Another Function as Parameter 函数使用应一个函数作为参数

func hasAnyMatches(list:[Int],condition:(Int) ->Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}


func lessThanTen(number:Int) -> Bool {
    return number < 10
}

var numbers = [20,19,18,12]
print("Function hasAnyMatches Return Value : "+String(hasAnyMatches(numbers,condition:lessThanTen)))

numbers.map({
    (number:Int) -> Int in
    let result = 3 * number
    return result
})

let sortedNumbers = numbers.sort{$0 > $1}
print("Closures Sorted Numbers Result[闭包函数SortedNumbers结果]")
print(sortedNumbers)


let mappedNumbers = numbers.map({number in 3 * number})
print("Numbers Map Result : "+String(mappedNumbers))

print("Add Total : "+String(tempScore))
print(occupations[shoppingList[1]])
print("Hello Swift :\(myVar) , \(myStr), \(myConst),\(integer)")

//Objects and Classes

class Shape {
    var numberOfSides = 0
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides"
    }
}

var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()

print("Shape Instance Description : "+shapeDescription)

class NamedShape {
    var numberOfSides: Int = 0
    var name: String
    
    init(name:String) {
        self.name = name;
    }
    
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}

class Square: NamedShape {
    var sideLength:Double
    
    init(sideLength:Double,name:String) {
        self.sideLength = sideLength
        super.init(name:name)
        numberOfSides = 4
    }
    
    func area() -> Double {
        return sideLength * sideLength
    }
    
    override func simpleDescription() -> String {
        return "A square sides of length \(sideLength)."
    }
}

let test = Square(sideLength:5.2,name:"my test square")
test.area()
test.simpleDescription()


class EquilateralTriangle: NamedShape {
    var sideLength: Double = 0.0
    
    init(sideLength: Double,name: String) {
        self.sideLength = sideLength
        super.init(name:name)
        numberOfSides = 3
    }
    
    var perimeter: Double {
        get {
            return 3.0 * sideLength
        }
        set {
            sideLength = newValue / 3.0
        }
    }
    
    override func simpleDescription() -> String {
        return "An equilateral triangle with sides of length \(sideLength)."
    }
}

var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")

print(triangle.perimeter)
triangle.perimeter = 9.9
print(triangle.sideLength)

 

分享到:
评论

相关推荐

    Swift学习笔记含项目代码.zip

    Swift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习笔记含项目代码.zipSwift学习...

    Swift学习笔记与资料集合

    "Swift学习笔记.docx" 和 "Swift学习笔记.pdf" 可能是由个人开发者或经验丰富的程序员编写的实践总结,通常会包含作者在学习过程中遇到的问题、解决方法和技巧,这对于初学者来说是非常宝贵的实战经验。这些笔记可能...

    Swift学习笔记

    Swift 学习笔记 Swift 是一种现代化的高性能编程语言,旨在为 iOS、macOS、watchOS 和 tvOS 等苹果平台上的应用程序提供强大的开发能力。本文将总结 Swift 的一些基础知识,包括基本语法、变量声明、数据类型、控制...

    swift学习笔记

    这篇学习笔记主要涵盖了Swift的基础知识和关键特性,旨在帮助初学者理解并掌握这种现代、强大且易读的语言。 一、Swift语言基础 Swift的语法简洁明了,易于理解。它引入了类型推断,使得编写代码时可以减少冗余的...

    SwiftNote:Swift学习笔记

    SwiftNote 是一个关于Swift编程语言的学习笔记集合,旨在帮助开发者深入了解和掌握Apple的这款现代、高性能的编程语言。这份笔记可能包含了从基础语法到高级特性的全面讲解,以及作者在学习过程中的心得和实践案例。...

    swift 学习笔记 之 扩展

    Swift编程语言以其强大的功能、简洁的语法和安全性在iOS、macOS、watchOS以及tvOS应用开发中占据了重要地位。扩展是Swift中的一个重要特性,它允许我们为已存在的类型添加新功能,而无需继承。本篇文章将深入探讨...

    swift 学习笔记 之 下标脚本的使用

    这篇学习笔记将深入探讨Swift下标脚本的使用,帮助你更好地理解和应用这一特性。 一、定义下标 在Swift中,你可以为自定义类型定义下标,以支持通过特定索引来访问和修改其内部数据。定义下标的关键字是`subscript`...

    swift 学习笔记 之 函数 编程题

    本笔记将深入探讨Swift中的函数编程,包括其语法、特性以及如何通过实际编程题来提升理解。 首先,Swift函数的定义使用关键字`func`,接着是函数名,然后是圆括号内的参数列表。例如: ```swift func greet(name: ...

    ios-Swift学习笔记之无限轮播图的三种实现方式.zip

    本篇学习笔记将详细讲解如何使用Swift实现无限轮播图的三种不同方式。 一、纯代码实现 纯代码实现无限轮播图需要我们手动处理滚动逻辑、定时器以及视图的显示和隐藏。首先,我们需要一个UICollectionView或...

    ChenZheying#BlogRepo#Swift学习笔记13-继承1

    子类Tandem继承自子类Bicycle,继承了Bicycle从Vehicle继承来的存储属性currentSpeed、只读计算属性description和方法

    Swift学习笔记之逻辑分支与循环体

    在这篇Swift学习笔记中,我们将深入探讨if/switch语句以及for和while循环。 1. **if语句**: 在Swift中,if语句的使用方式与Objective-C有所不同。首先,Swift的if语句后面不需要加括号,条件必须是明确的Bool类型...

    IOS开发-Swift-基础知识学习笔记

    本学习笔记将深入探讨Swift的基础知识,帮助初学者快速掌握这一强大的工具。 一、Swift简介 Swift是由Apple在2014年WWDC(全球开发者大会)上推出的,旨在提高开发效率和代码安全。它吸收了Objective-C的优点,同时...

    Openstack学习笔记

    OpenStack Swift 学习笔记 OpenStack Swift 是 OpenStack 开源云计算项目的子项目之一,旨在使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达 PB 级。Swift 并不是文件系统或者实时的数据存储...

    Swift学习笔记之构造器重载

    在Swift编程语言中,构造器(Constructor)是用于初始化新实例的特殊方法。当我们在创建一个新的结构体或类的实例时,构造器负责设置初始状态。在某些情况下,为了满足不同的初始化需求,我们可能需要定义多个构造器...

    Swift快速学习笔记

    这篇快速学习笔记将带你深入理解Swift的基础概念,包括类的继承、扩展和泛型、类与结构体、协议、数据结构和控制流以及自动引用计数(ARC)。 首先,我们来看“SwiftStudyPlayground类的继承.playground”。在Swift...

    Swift学习笔记之元组(tuples)

    Swift中的元组(tuples)是一种强大的数据结构,它允许你在单个复合类型中组合不同类型的值。元组可以包含零个或多个元素,并且每个元素可以是任意类型。这使得元组成为在Swift中临时存储和传递多值的理想选择。 ...

    swift快速学习笔记1

    知识点一:Swift语言概述 Swift是苹果公司推出的一种编程语言,主要用于iOS、macOS、watchOS和tvOS应用的开发。...随着对Swift语言的深入学习和实践,开发者将能够运用Swift编写高效且安全的应用程序。

    swift技术的个人学习笔记.zip

    swift技术的个人学习笔记

    小马哥swift入门到精通学习笔记

    小马哥swift入门到精通学习笔记

    swift-ReactNative学习笔记

    在"RNStudyNotes-master"这个压缩包中,可能包含了作者对于这两种技术结合使用的实践经验、代码示例和学习心得,对于想要深入了解Swift与React Native集成的开发者来说,是一份宝贵的学习资源。

Global site tag (gtag.js) - Google Analytics