ios入門10 閉包

2021-10-07 01:11:24 字數 1917 閱讀 3381

閉包有點像c++裡面的表示式匿名函式之類的

1.字包含功能的**塊

型別

2.可以優化的地方

-根據上下文推斷引數和返回值型別

-從單行表示式中隱式返回(閉包只有一行**,可以省略return)

-可以實用簡化引數名,如$0,$1(從0開始,表示第i 個引數)

-尾隨閉包語法

3.閉包語法

(1) 接收引數並返回制定型別的閉包語法

//匿名函式

import cocoa

let studname=

studname()//swift 閉包

(2) 閉包形式接收兩個引數並返回布林值

import cocoa

let devide=

let result=devide(200,20)

print(result)//10

4.閉包表示式

格式

1.

func fun(a:type)->void

2.fun()

3.fun()

之前

sorted(by:)

import cocoa

let names=["at","ae","d","s","be"]

func backwards(s1:string,s2:string)->bool

var reversed=names.sorted(by:backwaeds)//c++一致

print(reversed)//["s","d","be","at","ae"]

之後

import cocoa

let names=["at","ae","d","s","be"]

var reversed=names.sorted(by:)//$0 $1 $2呼叫閉包的引數

//var reversed=names.sorted(by:>})

print(reversed)

再後尾隨閉包

import cocoa

let names=["at","ae","d","s","be"]

var reversed=names.sorted()//$0 $1 $2呼叫閉包的引數

print(reversed)

5.捕獲值

閉包可以再其定義的上下文中捕獲常量或變數

巢狀函式也可以(之前遇到過)

即使定義這些常量和變數的原域已經不存在

捕獲了a和total,會在閉包內部存續,多次呼叫計數器會增加

把閉包賦給了兩個常量/變數,兩個值指向的都是乙個閉包

import cocoa

func cal(out_t total: int) -> () -> int

return decrementer

}let decrem = cal(out_t: 30)

print(decrem())//30

print(decrem())//60

print(decrem())//90

let alsedecrem=cal(out_t:30)

print(alsedecrem())//120

Python基礎10 閉包

內層函式引用了外層函式的變數 引數也算變數 然後返回內層函式的情況,稱為閉包 closure def calc sum lst deflazy sum return sum lst return lazy sumdef lazy sum args defsum ax 0 for n in args ...

rust 函式 和 閉包 10

目錄 一,函式 一 函式的宣告格式 二 用函式實現兩數交換值 二,閉包 一 閉包的宣告格式 二 使用閉包實現兩數交換值 三,異同 一 作用域不同 二 三個特性 所有權,可變借用和不可變借用 一致 1,所有權 2,借用 3,可變借用 mut修飾符在變數名前,函式定義時形式引數必須宣告型別,這是出於安全...

Swift 基礎入門 協議 閉包

協議 protocol 當協議中有可選實現方法時 該協議前要用關鍵字 objc 修飾,可選實現方法前,用 optional 修飾 objc protocol marrydelegate 必須要實現的 protocol dividdelegate class man person marrydeleg...