持变第十二
赋曰
世事有常,亦有不测:求书或得,启户或闭,除数或零,来信或空。庸工每以顺境为必然,及其有失,程序遽坠;良工则先为两途,得者载物而归,不得者明标其无。故有 或可有 之器,一形曰 可有,怀值于中;一形曰 可无,虚位以告。无非祸也,乃预料之分支;既入类型,调用者便不得佯作不知。
若失非寻常,而契约已破,可举异常以告急;若值确须历时而改,可置引用以持变。三者各司其职:可选值表预期之缺,异常表难以就地处置之败,引用表共享状态之迁。混而用之,则小失成大祸;辨而节之,则变化虽来,脉络不乱。
解章
标准库之可选值,类曰 「或可有」于「甲」。其构造有二:「可有」于「值」 者,有所得也;「可无」 者,无所得也。
除数为零,不遽生祸,而明返可无,可曰:
「安除」乃化「整数」而化「整数」而(「或可有」于「整数」)也。
「安除」者会「被除数」而会「除数」而
若「等」于「除数」于「零」
则「可无」
否则「可有」于(「除以」于「被除数」于「除数」)也。
全篇曰:
寻观「标准库」之书。
「安除」乃化「整数」而化「整数」而(「或可有」于「整数」)也。
「安除」者会「被除数」而会「除数」而
若「等」于「除数」于「零」
则「可无」
否则「可有」于(「除以」于「被除数」于「除数」)也。
「打印可选整数」乃化(「或可有」于「整数」)而「有」也。
「打印可选整数」者会「可」而
「打印行」于(「可选值表示」授以「整数」于「整数表示」于「可」)也。
「打印可选整数」于(「安除」于「八」于「二」)。
「打印可选整数」于(「安除」于「八」于「零」)。
其出曰:
可有(4)
可无
同例见持变。豫。实用之际,常以 鉴 处其二形,不惟打印之也。
异常
若调用之契已破,而当前之层无可善处者,可曰:
「发生事故」于『除数不得为零』
标准库又有 「尝试运行」,受一待行之术与一处异常之术。异常能越数层而归处理处,虽便,亦使常途之外别藏一途。凡“未找到”“输入尽”“解析败”诸可预料之事,多宜以可选值或专门之结果类型显书之。
引用
普通绑定不可随时改易。确须持一可变态者,乃立引用:
「匣」乃「引用类」于「整数」也。
「匣」者「新引用」授以「整数」于「零」也。
「写引用」授以「整数」于「匣」于「一」。
「读引用」授以「整数」于「匣」
引用使一名于异时可读异值,故宜限其疆,如缓存、器械之态、必要之速算。若能以参果传其状态,则纯函数易验、易推,常为上策。
试策
为 「安除」 作 「取零为默认」:可有数则返其数,可无则返零。复思:真商为零者,与除法失败者,岂不混乎?若混,则不宜过早去其可选之形,当令调用者自决也。