![]() |
1
28
在基本层面上,
但是,与您的
在您的具体示例中,两者都是
如果它们是函数中的局部变量,例如:
编译器甚至不需要创建两个
关于将值类型作为函数参数传递,对于足够大的类型和(对于结构)使用足够多属性的函数,编译器 can pass them by reference 而不是复制。然后被叫方只能在需要时(例如需要使用可变副本时)复制它们。 在其他情况下,如果结构是按值传递的,编译器也可以 specialise functions 以便只跨函数所需的属性进行复制。 对于以下代码:
假设
它只传递
因此编译器将尽其所能减少值类型的复制。但是,由于在不同的环境中有如此多的各种优化,您不能简单地将任意值类型的优化行为归结为只进行写时复制。 |
![]() |
Tom · SwiftUI.sheet导致背景白色闪烁 4 月前 |
![]() |
Danil · 种子/填充核心数据的最佳实践?[关闭] 4 月前 |
![]() |
Robin · LazyVGrid项目预计不会击中测试区域 5 月前 |
![]() |
Saurabh Saini · 结构下标 5 月前 |
![]() |
Alex Smith · 移动到下一个视图控制器后如何显示警报? 5 月前 |