我对这些条款感到困惑。根据我的理解,强制是当语言为了多个目的使用相同的符号时语言转换变量类型和重载。
答案 0 :(得分:1)
让我们暂时将计算机语言与面包店进行比较:当bake
功能超载时,您可以拥有许多不同的烤箱(实施),一个用于面包,一个用于比萨饼等。强制,你只需要一个烤箱,但是对于你想烤的一些东西,你需要一个小工具("强制功能")使它适合那个烤箱。
因此,对于重载,有多个实现(烤箱)由参数类型(食物)确定,强制有多个强制函数(小工具)从每个参数类型(食物)到一个单一类型(烤箱需要的那个) )
无论你有多种小工具,还是许多烤箱,它们都应该根据食物的种类来确定。当你有一个意大利食品烤箱和另一个含有西红柿的食物时,你会遇到问题:如何处理披萨?这就是例如Haskell程序员知道"重叠类型组#"。它有时可以解决,例如如果一个烤箱严格比另一个烤箱更专业(一个用于意大利食品,另一个用于托斯卡纳食品)
答案 1 :(得分:0)
从一般的角度来看,主要区别在于重载是显式的(由您,程序员控制),类型强制是隐式的(由编译器控制) )。