函数式对象之检查先决条件
博客专区 > 柳哥 的博客 > 博客详情
函数式对象之检查先决条件
柳哥 发表于4年前
函数式对象之检查先决条件
  • 发表于 4年前
  • 阅读 37
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

面向对象编程的优点之一就是它允许你把数据封装在对象之内以确保数据在整个生命周期中的有效性。像Rational这样的不可变对象,这就意味着你必须确保对象创建时数据的有效性。由于零做分母对Rational来说是无效状态,因此在把零传递给d的时候,务必不能让Rational被构建出来。解决这个问题的最佳方案是为主构造器定义先决条件(precondition)说明d必须为非零值先决条件是对传递给方法或构造器的值的限制,是调用者必须满足的需求。
一种方式是使用require方法(注:require方法定义在scala包的孤立对象Predef上),如例:

package scalaTest
class Rational(n:Int,d:Int) {
    require(d != 0)    //先决条件
    override def toString = n + "/" + d
}
object M1 {
    def main(args:Array[String]){
        println(new Rational(1,2))
    }
}

require方法带一个布尔型参数如果传入的值为真,require将正常返回。反之,require将抛出IllegalArgumentException阻止对象被构造,如例:

标签: scala
共有 人打赏支持
粉丝 200
博文 394
码字总数 347782
×
柳哥
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: