【发布时间】:2017-04-13 08:16:00
【问题描述】:
作为一项技术练习,我尝试创建不同的方法来计算三角形周长。
当给出三个边时——任务很简单, 但是当我们得到两条边和它们之间的角度或一条边和它的两条边时 - 我们应该应用一些三角运算。
为了区分这三种情况,我将边声明为小数,将角度声明为浮点数,从而给系统提示哪些方法要重载(例如:十进制 & 浮点数 & 十进制 => 2 条边和一个角度)。
这不是最优雅的解决方案,因为不应该使用数据类型来传输信息。 另一种选择是添加另一个变量,该变量将获得值 1 或 2 或 3 来指示问题的类型,但在这种情况下不需要重载..
有没有办法创建三个重载方法,每个方法都有三位小数,并以某种方式添加一个指示三个变量象征什么(以及使用哪种方法)?
【问题讨论】:
-
你有代码吗? @Geri Reshef
-
使用不同的类型是正确的方法。使用
decimal和float是错误的方式。您应该已经创建了两个(不可变的)struct、Length和Angle,可显式转换为 /decimal/double。 -
听起来像是 3 个不同的函数,应该有 3 个不同的名称