swift概述要点

昨天一天就把书中概括出来的swift重点部分学完了,有些挺容易懂的,也有不懂的,不懂的就先标记,在书本后面对每个知识点的细致教程里面再去弄懂就行。

这本书的编排还是非常有学习引导性的,首先就把全书涉及的知识点抛出一小部分让读者对整本书有一定的了解,对后面的学习计划会更清晰,不会一开始就是各种枯燥的概念介绍什么的,会打击读者的兴趣。看下下面的学习总结吧,看起来挺容易的,学习激情爆炸!

  下面的代码基本没什么解释,刚开始学习,没什么自己的见解可写 @[email protected]!

import Foundation

/// Hello, World! 是创建命令行程序就有的,运行一下,正式入坑

println("Hello, World!")

///常量、变量声明,var 表示常量,let 表示变量,数据类型写在变量名后 ex:Int 
var myVariable = 42
myVariable = 50
let myConstant = 42

let label = "The width is"
let width = 94
let widthLabel = label + " \(width)"

println(widthLabel)

var emptyArray = [String]()
var emptyDictionary = Dictionary<String, Float>()

//emptyArray[1]="fuck1"
emptyDictionary=["fuck":2.0,]

println(width)
//println(emptyDictionary["fuck"])

///所有可选类型都可以赋值nil;  let  val = nil 返回false 还是true?

var optionalString: String? = "fuck ?"
//optionalString == nil

println(optionalString)

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
optionalName = nil
println(optionalName)
if let name = optionalName {
greeting = "Hello, \(name)"
}
else {
greeting = "fuck u"
}

println(greeting)

/// 一个简单的循环

var firstForLoop = 0
var j=[2,4,6]
for i in j {
firstForLoop += i
println(i)
}
println(firstForLoop)
println(1...3)

///简单的函数

func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
println(greet("Bob", "Tuesday"))

func returnFifteen() -> Int {
var y = 10
func add() {
y += 5
}
add()
return y
}
println(returnFifteen())

///函数嵌套,可否多重嵌套,递归?  后面再看看。返回值是嵌套函数的返回值(Int -> Int)

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

println(increment(7))

///condition参数调用另外一个函数的返回值 Int -> Bool

func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Int {
for item in list {
if condition(item) {
return item
}
}
return 10
}
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
println(hasAnyMatches(numbers, lessThanTen))

///求平均数  @ @!
func sumOf(numbers: Int...) -> Int {
var sum = 0
var i = 0
for number in numbers {
sum += number
i++
}
if i==0 {
return i
}
else {
return sum/i
}
}
println(sumOf())
println(sumOf(42, 597, 12))

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

//println(numbers.map(1))

//sort([1, 5, 3, 12, 2]) { $0 > $1 }

//@end

///简单类的定义 构造函数init可以这样写吗,后面继续研究

class Shape {
var numberOfSides = 0
var name:String? = nil
var val:Int? = nil

init() {

}

init(name:String,val:Int) {
self.name = name
self.val = val
}

func simpleDescription() -> String {
if val != nil && name != nil {
return "\(val!) shape "+name!+" with \(numberOfSides) sides."
}
else
{
return "A shape with \(numberOfSides) sides."
}
}
}

class ShapeLen:Shape {
var len:Int? = nil
//override init () {
//}
init (name:String,val:Int,len:Int) {
self.len=len
super.init(name: name, val: val)
}

var GSlen:Int {
get {
return len! * numberOfSides
}
set {
len = newValue
}
}

override func simpleDescription() -> String {
return "\(val!) shape "+name!+" with \(numberOfSides) \(len!) sides."
}
}

var lenShape=ShapeLen(name: "square",val: 2,len: 2)
lenShape.numberOfSides=2
lenShape.GSlen=3
println(lenShape.GSlen)

var shapeIns=Shape(name: "square", val: 2)
shapeIns.numberOfSides=666
println(Shape().simpleDescription())
println(shapeIns.simpleDescription())

///简单枚举定义,自己加了一个all的枚举,返回所有枚举值,swift能给我一个all吗?

enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King, All
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
case .All:
return "ace,1,2,3,4,5,6,7,8,9,10,jack,queen,king"
default:
return String(self.rawValue)
}
}
}
let ace = Rank.Jack
let aceRawValue = ace.rawValue

println(ace.simpleDescription())
println(aceRawValue)

enum Suit {
case Spades, Hearts, Diamonds, Clubs, All
func simpleDescription() -> String {
switch self {
case .Spades:
return "spades"
case .Hearts:
return "hearts"
case .Diamonds:
return "diamonds"
case .Clubs:
return "clubs"
case .All:
return "spades,hearts,diamonds,clubs"
}
}

}
let hearts = Suit.Hearts
let heartsDescription = hearts.simpleDescription()

///简单结构体定义

struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
}

///输出整副扑克牌,还没写完  T T
/* 
func createAll() {
for ran in Rank.All.simpleDescription().componentsSeparatedByString(",") {
println(" ")
}
*/
}

let threeOfSpades = Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()

///把enum的switch方法写在外面了  暂时没感觉这个写法有什么好处啊 略坑  爬的第一个坑

enum ServerResponse {
case Waiting(String)
case Result(String, String)
case Error(String)
}

let success = ServerResponse.Result("6:00 am", "8:09 pm")
let failure = ServerResponse.Error("Out of cheese.")
let wait = ServerResponse.Waiting("server is responing")

func serverState(state:ServerResponse) -> String {
var serverResponse:String
switch state {
case let .Result(sunrise, sunset):
serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
case let .Error(error):
serverResponse = "Failure... \(error)"
case let .Waiting(wait):
serverResponse = "Please wait...\(wait)"
default:
serverResponse = "no state"
}
return serverResponse
}

println(serverState(wait))

///简单的接口协议定义 很牛逼,简直亮瞎了  赶紧在Int里面加个方法压压惊

///使用extension来为现有的类型添加功能,比如添加一个计算属性的方法。你可以使用扩展来给任意类型添加协议,甚至是你从外部库或者框架中导入的类型。

protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}

class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
// simpleDescription += " Now 100% adjusted."
}
}

/*something unsolved below
enum ExampleProtocolEnum:ExampleProtocol {
case Other1,Other2
var simpleDescription:String {
get {
switch self {
case .Other1 :
return "A very simple enum1."
case .Other2 :
return "A very simple enum2."
default :
return "no enum"
}
}
set {
switch self {
case let .Other1 :
self.simpleDescription="A very simple enum1."
case let .Other2 :
self.simpleDescription="A very simple enum2."
default :
self.simpleDescription="no enum"
}
}
}

mutating func adjust() -> String{
//
}

}
*/

extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}

var testExtension:Int = 10
testExtension.adjust()
println(testExtension.simpleDescription)

///泛型感觉直接放大招了  完全没理解  后面再继续研究了
func repeat<ItemType>(item: ItemType, times: Int) -> ItemType {
var result:ItemType? = nil
println(item,times)
for i in 0...times {
result = item
}
return result!
}
println(repeat("knock", 4))

enum OptionalValue<T> {
case None
case Some(T)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(100)

/*something unsolved below

func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool {
for lhsItem in lhs {
for rhsItem in rhs {
if lhsItem == rhsItem {
return true
}
}
}
return false
}
anyCommonElements([1, 2, 3], [3])

*/

///that‘s  all !  thanks

时间: 2024-12-24 18:33:08

swift概述要点的相关文章

Swift 概述及Swift运算符和表达式

Swift  是用于设计 iOS 及 Mac OS X 应用的一门新 语言. Swift 特点 ?   Swift  保留了 C  与 Objective-C 的优点,并摒弃 其为了兼容 C  语言所受的限制. ?    Swift吸纳了安全编程模式,并新增了一些现代 化功能,使其更易使用.更为灵活.更具乐趣. ?     Swift 的 简 洁 风 格 与 广 受 欢 迎 的 成 熟 框 架Cocoa / Cocoa Touch 相结合,将为重新构思软件的开 发过程带来新机遇. ?   Swi

多线程的概述要点

进程: 什么事进程:进程就是一个运行的程序,是程序在内存中开辟的一片空间. 线程:什么叫做线程:就是一个执行单元,负责程序的运行.执行单元可以是多个的,专业术语称为并发. 多线程的合理使用可以提高Cpu的应用效率,过多地开启多个线程会使得Cpu忙不过来运算. 多个线程的开启,并不是一起,由于Cpu处理的太快导致我们看上去是一起的,但实际上Cpu处理线程的顺序是逐个的并且是“随机的”.

汇集了很多swift 学习指南

https://github.com/ipader/SwiftGuide 1,059   Unstar7,294 Fork1,966 ipader/SwiftGuide CodeIssues 0Pull requests 0WikiPulseGraphs 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排.http://dev.swiftguide.cn 376 commits 3 branches 0 releases 12 contributors Swift 100.0%

Swift 学习指南

github地址:https://github.com/ipader/SwiftGuide Swift 语言指南 @SwiftLanguage 更新于 2016-4-18,更新内容详见 Issue 51.往期更新回顾详见<收录周报> 这份指南汇集了 Swift 语言主流学习资源,并以开发者的视角整理编排.对于精选项目及文章,可直接访问<Swift 项目精选>和<Swift 文章精选>. 目录 入门指引 教程文章 开源项目 推荐网站 开发工具 媒体报道 开放平台 Appl

Swift自学笔记——Lesson01:玩一玩playground、Swift的简介与入门

一.玩一玩playground 首先要新建一个playground,创建完成之后,你会看到程序里面有一个定义好的变量 str,在右边的侧栏中会显示出变量的值,也就是说,我们在编程的过程中就能对变量进行实时监测. 1.点击右边栏对应行的圆圈图标,变量的值就会显示在这行代码的下面 2.点击右边栏对应行的眼睛图标,也能查看变量的值 有没有感觉到playground很好玩?自己去尝试一下吧??????! 二.Swift的简介 1.Swift概述 a).2011年7月,Chris Lattner开始主导开

Swift 语言指南--来自github学习

@SwiftLanguage 更新于 2016-6-6,更新内容详见 Issue 55.往期更新回顾详见<收录周报> 这份指南汇集了 Swift 语言主流学习资源,并以开发者的视角整理编排.对于精选项目及文章,可直接访问<Swift 项目精选>和<Swift 文章精选>.还有开发者们自己维护的<Swift 开发者.项目.最佳实践>.当然也不能错过那些活跃.优秀的<开发者个人资料页>. 目录 入门指引 教程文章 开源项目 推荐网站 开发工具 媒体报

Swift培训

本篇是Swift内部培训整理的PPT材料,主要内容来源于苹果Swift编程语言官方教程,参考了网上的一些视频课程内容.在教程介绍完之后,本人附带实现了一个项目开发中的常用场景的Demo:基于导航栏和Tab栏的应用. 1.Swift概述 我们先来看一篇文章:<苹果新贵 Swift之前世今生> Swift是用于设计iOS及Mac OS X应用的一门新语言. 1.1.Swift特点 Swift保留了C与Objective-C的优点,并摒弃其为了兼容C语言所受的限制: Swift吸纳了安全编程模式,并

动态生成多级菜单

MVC5+EF6 入门完整教程13 -- 动态生成多级菜单 稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据model动态产生. 文章提纲 概述要点 && 理论基础 详细步骤 一.分析多级目录的html结构 二.根据html结构构建data model 三.根据data model动态生成树形结构 四.解析树形结构成html 总结 概述要点 &am

MVC5+EF6 入门完整教程12--灵活控制Action权限

大家久等了. 本篇专题主要讲述MVC中的权限方案. 权限控制是每个系统都必须解决的问题,也是园子里讨论最多的专题之一. 前面的系列文章中我们用到了 SysUser, SysRole, SysUserRole 这几个示例表. 我们以此为基础,完成RBAC (基于角色的控制) 的核心功能. 在此给出我的最佳实践,最终的效果是针对任意一个Action或Controller,都可以根据配置的角色来控制访问权限. 完成此核心功能后,可以再往两方面扩展常用功能: 1. 可以根据 组织/用户/角色 的并集来控