我个人理解,也不能处处都完全明确。编译器还是要聪明些,可以做些省略。
你觉得省略声明 更费脑子,那你可以写完整的声明。
有人觉得不写声明更简单,就可以省略声明。
另外,如果你写过rust的crate就会发现,为了通用性,会用到很多泛型,会导致一些类型非常复杂。但如果要求使用者也要都写出来,就很麻烦了。
比如:
let v = (0..10).collect();
要是完整写(这里还省略了Allocator):
let v: Vec<i32> = <std::ops::Range<i32> as std::iter::Iterator>::collect(
<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter(0..10)
);
这也还是let的推导。如果match enum的时候也这么写,那就太恐怖了。
【 在 namoamituofo 的大作中提到: 】
: 你对如下观点有何见解:
: 我看类型推导也是个多余,属于过度设计。推导是写的时候省事了,但读的时候,读者脑子里面还得有个线程,人肉充当编译器进行类型推导。没感觉高明在哪,虽然如此,但也还有底线,还管类型,总比弱类型语言负责点。
:
--
FROM 115.220.224.*