日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift学习笔记-1

發(fā)布時間:2023/12/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift学习笔记-1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Apple官方開發(fā)手冊地址:

https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/index.html


語法概覽

1 Simple Values

常量定義:let

變量定義:var

常量或變量類型和初始值一致:var myVariable = 42myVariable = 50let myConstant = 42也能夠顯式的指定類型: let explicitDouble:Double = 70


類型轉(zhuǎn)換,比方String()

let label = "The width is "let width = 94let widthLabel = label + String(width)
打印常量/變量值使用 \()

let apples = 3let oranges = 5let appleSummary = "I have \(apples) apples."let fruitSummary = "I have \(apples + oranges) pieces of fruit."

創(chuàng)建數(shù)組或字典。使用[ ]:

var shoppingList = ["catfish", "water", "tulips", "blue paint"]shoppingList[1] = "bottle of water"var occupations = ["Malcolm": "Captain","Kaylee": "Mechanic",]occupations["Jayne"] = "Public Relations"初始化一個空的數(shù)組或字典:

let emptyArray = String[]()let emptyDictionary = Dictionary<String, Float>()
2 Control Flow

條件推斷 if / switch

循環(huán)控制 for-in for? while? do-while

let individualScores = [75, 43, 103, 87, 12]var teamScore = 0for score in individualScores {if score > 50 {teamScore += 3} else {teamScore += 1}}teamScore


switch case

let vegetable = "red pepper"switch vegetable {case "celery":let vegetableComment = "Add some raisins and make ants on a log."case "cucumber", "watercress":let vegetableComment = "That would make a good tea sandwich."case let x where x.hasSuffix("pepper"):let vegetableComment = "Is it a spicy \(x)?

" default: let vegetableComment = "Everything tastes good in soup." }


for-in

let interestingNumbers = ["Prime": [2, 3, 5, 7, 11, 13],"Fibonacci": [1, 1, 2, 3, 5, 8],"Square": [1, 4, 9, 16, 25],]var largest = 0for (kind, numbers) in interestingNumbers {for number in numbers {if number > largest {largest = number}}}largest
while/do-while

var m = 2 do { m = m * 2 } while m < 100 m

for?

傳統(tǒng)格式: var secondForLoop = 0 for var i = 0; i < 3; ++i { secondForLoop += 1 } secondForLoop

新的格式: var firstForLoop = 0 for i in 0..3 { firstForLoop += i } firstForLoop
3 Functions and Closures

函數(shù)名(參數(shù)1,參數(shù)2)->返回類型func greet(name: String, day: String) -> String {return "Hello \(name), today is \(day)."}greet("Bob", "Tuesday")

返回多個參數(shù):

func getGasPrices() -> (Double, Double, Double) {return (3.59, 3.69, 3.79)}getGasPrices()
可變參數(shù):

func sumOf(numbers: Int...) -> Int {var sum = 0for number in numbers {sum += number}return sum}sumOf()sumOf(42, 597, 12)函數(shù)嵌套:

func returnFifteen() -> Int {var y = 10func add() {y += 5}add()return y}returnFifteen()返回嵌套函數(shù)返回值:

func makeIncrementer() -> (Int -> Int) {func addOne(number: Int) -> Int {return 1 + number}return addOne}var increment = makeIncrementer()increment(7)<pre name="code" class="objc"> class NamedShape {var numberOfSides: Int = 0var name: Stringinit(name: String) {self.name = name}func simpleDescription() -> String {return "A shape with \(numberOfSides) sides."}}
用還有一個函數(shù)作參數(shù):

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, 7, 12]hasAnyMatches(numbers, lessThanTen)
{}和$的使用

numbers.map({ number in 3 * number })
sort([1, 5, 3, 12, 2]) { $0 > $1 }

4 Objects and Classes

類實現(xiàn).構(gòu)造和析構(gòu)函數(shù) init/deinit

class NamedShape {var numberOfSides: Int = 0var name: Stringinit(name: String) {self.name = name}<code class="code-voice">deinit</code>(){}func simpleDescription() -> String {return "A shape with \(numberOfSides) sides."}}類使用:

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

類的繼承和函數(shù)重載:

<pre name="code" class="objc">class EquilateralTriangle: NamedShape {var sideLength: Double = 0.0子類中初始化須要運行:1)設(shè)置子類屬性值2)父類初始化3)設(shè)置父類屬性值init(sideLength: Double, name: String) {self.sideLength = sideLengthsuper.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 triagle with sides of length \(sideLength)."} }
預設(shè)置 willSet和 didSet
willSet { square.sideLength = newValue.sideLength }
When working with optional values, you can write ? before operations like methods, properties, and subscripting. If the value before the ? is nil, everything after the ?

is ignored and the value of the whole expression is nil. Otherwise, the optional value is unwrapped, and everything after the ?

acts on the unwrapped value. In both cases, the value of the whole expression is an optional value.

let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square")let sideLength = optionalSquare?.sideLength

5 Enumerations and Structures

enum的定義和使用

enum Rank: Int {case Ace = 1case Two, Three, Four, Five, Six, Seven, Eight, Nine, Tencase Jack, Queen, Kingfunc simpleDescription() -> String {switch self {case .Ace:return "ace"case .Jack:return "jack"case .Queen:return "queen"case .King:return "king"default:return String(self.toRaw())}}}let ace = Rank.Acelet aceRawValue = ace.toRaw()enum值和raw值的轉(zhuǎn)換(toRaw和fromRaw)

if let convertedRank = Rank.fromRaw(3) {let threeDescription = convertedRank.simpleDescription()}

struct 和class的差別:

struct使用的時候是拷貝。class使用的時候是引用。


6 Protocols and Extensions

聲明一個protocol

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

協(xié)議使用:

class SimpleClass: ExampleProtocol {var simpleDescription: String = "A very simple class."var anotherProperty: Int = 69105func adjust() {simpleDescription += " Now 100% adjusted."}}var a = SimpleClass()a.adjust()let aDescription = a.simpleDescriptionstruct SimpleStructure: ExampleProtocol {var simpleDescription: String = "A simple structure"mutating func adjust() {simpleDescription += " (adjusted)"}}var b = SimpleStructure()b.adjust()let bDescription = b.simpleDescription

Notice the use of the mutating keyword in the declaration of SimpleStructure to mark a method that modifies the structure.


Use extension to add functionality to an existing type

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

7? Generics

參數(shù)類型待定:

func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {var result = ItemType[]()for i in 0..times {result += item}return result}repeat("knock", 4)使用where帶參數(shù)列表:

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])

轉(zhuǎn)載于:https://www.cnblogs.com/mfmdaoyou/p/7348719.html

總結(jié)

以上是生活随笔為你收集整理的Swift学习笔记-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。