我已经了解了foldLeft和reducleft的基本区别foldLeft:必须传递初始值reduceLeft:以集合的第一个元素作为初始值如果集合为空,则抛出异常还有其他区别吗?有什么特殊的原因要有