gpt4 book ai didi

swift - Swift 下标可以返回变量吗?

转载 作者:行者123 更新时间:2023-11-28 05:35:13 25 4
gpt4 key购买 nike

在 C# 中,唯一实际返回变量 的索引器 1 , 2 是数组索引器。

void Make42(ref int x) {x=42;}
void SetArray(int[] array){
Make42(ref array[0]);} //works as intended; array[0] becomes 42
void SetList(List<int> list){
Make42(ref list[0]);} //does not work as intended, list[0] stays 0

在上面的例子中,array[0] 是一个变量,但是 list[0] 不是。这是许多开发人员编写高性能库,被迫编写自己的 List 实现(与内置 List 不同,暴露底层数组)以获得基准测试的罪魁祸首表现出语言。

在 Swift 中,ref 被称为 inoutindexer 似乎被称为 subscript。我想知道 Swift 的 subscript 中是否有任何机制?显式返回一个变量而不是一个(可以是值类型或引用类型)。

最佳答案

如果我可以引用 C++ 的说法,您会希望返回一个值的引用。我在这里使用这个术语是因为编程人群通常更容易理解它。

C# 将其限制为数组的原因是返回任意引用 may compromise the language's safety guarantees如果没有正确完成。

在 Swift 中似乎没有返回引用的语法。由于返回引用很难验证,而且由于 Swift 相当新,而且它的目标是成为一种安全的语言,因此 Apple 没有走这条路是可以理解的。

如果您达到需要这种性能的水平,您可能需要考虑 C++,在 C++ 中您可以牺牲几乎所有想要获得性能的安全性。

关于swift - Swift 下标可以返回变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com