这解决了与this post相同的主题。
有人问为什么Scala不对返回语句进行类型推断。
Daniel Sobral回答说,它会“增加编译器的复杂性并减慢它的速度”。
我实际上并不相信这一点。编译器必须查看可能的返回值列表,这些值可以在函数中的任何位置发生(例如,在if / then或match语句的多个分支中)。它已经无法进行统一和类型推断,直到它到达函数的末尾。将显式返回语句的值添加到统一值集合中应该基本上无需额外工作。
我想听听Scala开发人员的意见。这是故意阻止回复陈述吗? (IMO,在复杂的函数中,明确的'return'语句是好的东西,因为它澄清了控制从函数中退出的确切位置。)