swift-5-汇编分析闭包本质

news/2025/3/10 5:44:42/

一、枚举、结构体、类都定义方法

方法占用对象的内存么?

不占用

方法的本质就是函数

方法、函数都存放在代码段,因为方法都是公共的,不管 对象一还是对对象二调用都是一样的,所以放在代码段,但是每个对象的成员不一样所以放在每个对象的内存里面

二、闭包表达式

在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数
函数的表示
func sum(_ v1: Int, _ v2: Int) -> Int { v1 + v2 }
闭包的表示
var fn = {
(v1: Int, v2: Int) -> Int in
return v1 + v2
}
fn(10, 20){
(v1: Int, v2: Int) -> Int in
return v1 + v2 }(10, 20){
(参数列表) -> 返回值类型  in 函数体代码
}

三、闭包表达式的简写

四、尾随闭包

如果将一个很长的闭包表达式作为函数的最后一个实参,使用尾随闭包可以增强函数的可读性

尾随闭包是一个被书写在函数调用括号外面(后面)的闭包表达式

五、数组的排序

六、闭包忽略参数

func exec(fn: (Int, Int) -> Int) {
print(fn(1, 2))
}
exec {  ,  in 10 } // 10

自动推断类型

七、汇编分析闭包


http://www.ppmy.cn/news/1577999.html

相关文章

DeepSeek开源Day2:DeepEP技术详解

2 月 24 日,DeepSeek 启动 “开源周”,第二个开源的代码库为 DeepEP。很好,又挤了一段有硬件基因的牙膏出来。H100/H800 绝对是 DeepSeek 的小心肝。 1 DeepEP 简介 DeepEP 是由 deepseek-ai (深度求索)开发的一个开源…

Go语言中位清除运算符的应用场景

package mainimport "fmt"func main() {a : 5 //101b : 1 //001//100 -> 4fmt.Println(a, b)//位清除 当b为0的时候取a的值,当b为1的时候取0fmt.Println(a &^ b) }《Go语言圣经》里面有对此的描述,x a &^ b,当b为…

React基础之组件通信

组件嵌套 父子传值实现 实现步骤 1.父组件传递数据-在子组件标签上绑定属性 2.子组件接收数据-子组件通过props参数接收数据 import React, { useRef, useState } from react; //父传子 //1.父组件传递数据,需要在子组件标签上绑定数据 //2.子组件接收数据 props的参…

【从零开始学习计算机科学】计算机组成原理(六)异常事件处理

【从零开始学习计算机科学】计算机组成原理(六)异常事件处理 异常事件处理异常处理的数据通路异常事件入口地址 异常事件处理 异常和中断事件改变处理机正常指令的执行顺序。异常指令执行过程中,由于操作非法和指令非法引起的事件。陷阱指陷…

idea技巧

文章目录 查看最近修改的代码或者文件折叠和展开代码显示类结构图(类的继承层次)快速定位到代码块开始位置\结束代码快速搜索和打开类快速显示类结构,可以显示类中包含的所有属性和方法在方法间快速移动定位(即光标以方法为单位移…

ARM嵌入式低功耗高安全:工业瘦客户机的智慧城市解决方案

智慧城市建设的不断推进,工业瘦客户机(Industrial Thin Client)作为一种高效、稳定的计算终端设备,正在成为智慧城市基础设施的重要组成部分。工业瘦客户机以其低功耗、高安全性和易管理性,为智慧城市的各个领域提供了…

[c语言日寄]结构体:内存对齐

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

Elasticsearch如何删除字段

文章目录 1、问题描述2、案例讲解3、问题剖析4、解决方案4.1 注意:4.2 步骤:4.3 示例:4.3.1 创建一个新的索引4.3.2 reindex 重建索引4.3.3 恢复索引 5、彩蛋 & 坑5.1 坑5.2 使用 Pipline 6、总结 1、问题描述 在 Elasticsearch 中&…