tao-of-rust-codes
tao-of-rust-codes copied to clipboard
[第二章] 2.7 关于临时值的概念
页码与行数
- 第17页,代码清单2-7
- 第2行
文本或排版错误
关于临时值的解释,我觉得讲述的是很模糊的。这里我看到了两个版本
第一个版本来自书中,2-7代码清单我没看懂,看完完全不知道作者想表达什么
第二个版本来自作者给出的代码示例
最后我自己理解起来,其实想说明的就是
函数返回值是一个临时值,我们不能对临时值进行写入操作。但是我们可以对字面量或者说是临时值取地址,构造另外一个内部保存的是内存地址的临时值·
一个建议是,最好对这里修改一下。既然书中出现了临时值的概念就应该讲解清楚。而不是在书中强调“对字面量取地址构造的就是临时值”,然后又在代码示例中给出一个看起来不太相关的例子。这对于读者来说,是一个非常大的障碍。
不过,如果我的理解本身就是错的,也请大家指证。
@ZhangHanDong
@fengzixu 感谢反馈。「临时值」是指提前Drop,没有明确使用let绑定的一个值。在第二版中考虑把这个描述再增加一下。 欢迎更多反馈。
确实,这里我看的时候,觉得特别奇怪,为什么Rust还能这么玩? 然后我试了一下,确实可以,我把x的值打印出来,看来这里的取引用会导致Rust把一个临时值存放在栈上。 作为对比,我还用C++试了一下,C++是不行的,学Rust我经常用C++去交叉对比,要是书上有一些这样的内容就好了。