pass-by-value相关内容

为什么SWIFT不允许在类初始化中给自己赋值,而不允许在协议初始化中赋值?

我经常发现自己喜欢在struct、enum和protocol的初始值设定项中,我可以编写类似self = someValue的内容。当我有一些预定义的值或正在克隆现有值时,这很棒。 但是,此语法不适用于classES。我也不知道为什么。 无法赋值:‘self’是不可变的 如果关注的是双重初始化,则SWIFT编译器知道我是否、何时以及在哪里调用指定的super或self初始化器,因此它知道 ..

Java修改映射内的关键对象

我在使用Java MAP时遇到问题。我在地图中输入一个对象作为关键字。然后,我修改了键,映射不再将该对象视为映射的键。即使对象内的键已相应修改。 我正在使用来自StanfordNLP的对象CoreLabel,但我想它适用于一般情况。 Map myMap = new HashMap... CoreLabel key = someCreatedCor ..
发布时间:2022-04-22 22:42:29 Java开发

为什么围棋中的作业要创建一个副本?

我会稍微澄清一下这个问题。我已经(几乎完全)阅读了围棋规范、常见问题、有效围棋,当然还有围棋巡回赛。 我知道围棋是一种传递价值的语言,我甚至设法对这种行为进行了推理,并理解了其中的所有含义。 围棋中的所有作业也会创建副本。在某些情况下,它只是一个值,在某些情况下--一个指针。对于某些数据结构,复制整个结构会比较棘手,并且可能包含指向另一个数据结构的隐式指针。 问题是:语言规范中有 ..
发布时间:2022-04-13 11:54:13 其他开发

在 C# 中通过引用或值传递对象

在C#中,我一直认为非原始变量通过引用传递,原始值通过值传递. 因此,当将任何非原始对象传递给方法时,对方法中的对象所做的任何事情都会影响正在传递的对象.(C# 101 的东西) 但是,我注意到当我传递一个 System.Drawing.Image 对象时,情况似乎并非如此?如果我将 system.drawing.image 对象传递给另一个方法,并将图像加载到该对象上,然后让该方法超 ..
发布时间:2022-01-30 10:14:22 C#/.NET

不是“常量"吗?按值传递时多余?

我在阅读我的 C++ 书籍 (Deitel) 时遇到了一个计算立方体体积的函数.代码如下: 双立方体(常量双面){返回边*边*边;} 使用“const"限定符的解释是这样的:“const 限定符应该用于强制执行最小权限原则,告诉编译器函数不修改变量端". 我的问题:这里使用“const"不是多余/不必要的,因为变量是按值传递的,所以函数无论如何都不能修改它? 解决方案 const ..
发布时间:2022-01-23 23:51:39 C/C++开发

为什么 volatile 局部变量的优化与 volatile 参数不同,为什么优化器会从后者生成无操作循环?

背景 这是受此问题/答案和评论中随后讨论的启发:“易失性"的定义是这种易失性还是GCC 有一些标准合规性问题?.根据其他人和我对应该发生的情况的解释,正如评论中所讨论的,我已将其提交给 GCC Bugzilla:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71793 其他相关回复也欢迎. 此外,该线程已经引起了这个问题:Does acces ..
发布时间:2022-01-23 20:41:40 C/C++开发

“ref"有什么用?对于 C# 中的引用类型变量?

我明白,如果我传递一个值类型(int、struct 等)作为参数(没有 ref 关键字),该变量的副本将传递给该方法,但如果我使用 ref 关键字,则会传递对该变量的引用,而不是新的引用. 但是对于引用类型,如类,即使没有 ref 关键字,引用也会传递给方法,而不是副本.那么 ref 关键字和引用类型有什么用? 举个例子: var x = new Foo(); 以下有什么区别? ..
发布时间:2021-12-29 19:32:25 C#/.NET

结构是“按值传递"吗?

我最近尝试为 Vector2 字段创建一个属性,只是发现它不能按预期工作. public Vector2 Position { get;放;} 这会阻止我更改其成员的值 (X & Y) 查找关于此的信息,我读到为 Vector2 结构创建属性只会返回原始对象的副本,而不是引用. 作为 Java 开发人员,这让我很困惑. C#中的对象什么时候按值传递,什么时候按引用传递? 所 ..
发布时间:2021-12-23 17:03:14 C#/.NET

哪个更快?按引用传递与按值传递 C++

我认为通过引用传递应该比通过值传递更快,因为计算机不会复制数据,它只是指向数据的地址. 但是,请考虑以下 C++ 代码: #include #include #include 使用命名空间标准;//不要使用通过引用传递&有了这个功能,它会变得很慢unsigned long long computePascal(const unsigned int row, ..

PHP 变量是按值传递还是按引用传递?

PHP 变量是按值传递还是按引用传递? 解决方案 It's by value 根据 PHP 文档. 默认情况下,函数参数是按值传递的(这样,如果函数内参数的值发生更改,则不会在函数外更改).要允许函数修改其参数,它们必须通过引用传递. 要让函数的参数始终通过引用传递,请在函数定义中的参数名称前添加一个与号 (&). ..
发布时间:2021-12-13 20:41:17 PHP

按值传递与按引用或按指针传递的性能成本?

让我们考虑一个对象 foo(可能是一个 int、一个 double、一个自定义的 struct,一个 class,随便).我的理解是通过引用一个函数来传递 foo(或者只是传递一个指向 foo 的指针)会导致更高的性能,因为我们避免制作本地副本(这可能很昂贵)如果 foo 很大). 然而,从答案 here 看来,64 位系统上的指针实际上可以预期为 8 字节大小,而不管指向的是什么.在我的系 ..

按引用传递还是按值传递?

在学习一种新的编程语言时,您可能会遇到的一个可能的障碍是该语言是否默认是值传递或引用传递.> 所以这是我问你们所有人的问题,用你们最喜欢的语言,实际上是如何完成的?什么是可能的陷阱? 当然,您最喜欢的语言可以是您玩过的任何语言:流行, 晦涩, 深奥, 新、旧... 解决方案 这是我自己对 Java 编程语言. 首先是一些代码: public void swap(int x, ..

切片是按值传递的吗?

在 Go 中,我试图为我的旅行商问题制作一个打乱切片函数.在执行此操作时,我注意到当我开始编辑切片时,我每次传入的加扰功能都不同. 经过一些调试,我发现这是由于我在函数内部编辑了切片.但是由于 Go 应该是一个“传递值"语言,这怎么可能? https://play.golang.org/p/mMivoH0TuV 我提供了一个游乐场链接来说明我的意思.通过删除第 27 行,您会得到 ..
发布时间:2021-12-11 22:16:19 其他开发