PureScript-fromMaybe不返回Maybe值



考虑以下简单的代码示例,

module Main where
import Prelude (discard, Unit, ($))
import Effect (Effect)
import Effect.Console (log)
import Data.Int ( toStringAs, fromNumber, decimal )
import Data.Maybe ( fromMaybe )
myNumber :: Number
myNumber = 4.762
myInteger :: Int
myInteger = fromMaybe 0 (fromNumber myNumber)
main ∷ Effect Unit
main = do
log ( toStringAs decimal myInteger )

预期值为

4

然而,该代码的输出是

0

问题:为什么fromMaybe返回0而不是maybe值(4(?

你的问题不是fromMaybe,而是fromNumber(顺便说一句,专业提示:当你看到问题时,永远不要假设你知道原因是什么;如果你对原因有假设,请先检查它,然后再尝试解决(。

再次阅读文档。报价:

数字必须已经是一个整数,并且在Int类型的有效值范围内,否则返回Nothing

您的数字是而不是整数,所以fromNumber返回Nothing,就像它承诺的那样。


根据您的预期输出判断,您可能实际上想要的是floor

最新更新