官术网_书友最值得收藏!

  • Scala編程(第5版)
  • (德)馬丁·奧德斯基等
  • 350字
  • 2022-05-06 15:51:44

6.4 檢查前提條件

接下來,我們將注意力轉(zhuǎn)向當前主構(gòu)造方法的一個問題。本章最開始曾經(jīng)提到,有理數(shù)的分母不能為零。而目前我們的主構(gòu)造方法接收以參數(shù)d傳入的零:

面向?qū)ο缶幊痰囊粋€好處是可以將數(shù)據(jù)封裝在對象里,以確保整個生命周期中的數(shù)據(jù)都是合法的。對Rational這樣的不可變對象而言,這意味著需要確保在構(gòu)造對象時數(shù)據(jù)合法。由于對于Rational數(shù)來說分母為零是非法的狀態(tài),因此當0作為參數(shù)d傳入的時候,不應該允許這樣的Rational實例被構(gòu)建出來。

解決這個問題的最佳方式是對主構(gòu)造方法定義一個前提條件precondition),參數(shù)d必須為非0值。前提條件是對傳入方法或構(gòu)造方法的值的約束,是方法調(diào)用者必須滿足的。實現(xiàn)它的一種方式是使用require方法,[1]就像這樣:

require方法接收一個Boolean類型的參數(shù)。如果傳入的參數(shù)為true,則require方法將會正常返回;否則,require方法將會拋出IllegalArgumentException來阻止對象的構(gòu)建。

主站蜘蛛池模板: 永寿县| 甘泉县| 泽普县| 德钦县| 安义县| 汾阳市| 文登市| 本溪| 黑河市| 北流市| 宜川县| 左权县| 永修县| 夏邑县| 花垣县| 大竹县| 防城港市| 连江县| 新兴县| 南部县| 延川县| 蒲城县| 泸水县| 康定县| 丁青县| 韩城市| 上饶县| 浮梁县| 巴林右旗| 盖州市| 布尔津县| 萨迦县| 平谷区| 屯门区| 平武县| 长丰县| 无极县| 仪陇县| 通山县| 汾阳市| 潜山县|