【发布时间】:2021-05-10 20:14:26
【问题描述】:
我想使用 hspec 创建一些具有不同值的测试。我写了下面的代码,它没有编译,但给出了我的目标:
spec :: Spec
spec = do
describe "productOneLine" $ do
let
inVector = Data.Vector.replicate 0 0
inInteger = 3
outVector = Data.Vector.replicate 1 0
in
it "must manage empty vector" $ productOneLine inVector inInteger `shouldBe` outVector
let
inVector = Data.Vector.fromList [2, 4, 5]
inInteger = 4
outVector = Data.Vector.fromList [9, 6, 1, 2]
in
it "must multiply a vector by an integer" $ productOneLine inVector inInteger `shouldBe` outVector
如何为每个以it 开头的 ligne 创建不同的 inVector、inInteger 和 outVector 组?
【问题讨论】:
-
谢谢。但是我想知道如何为
do块中的各个行插入letin或where。 -
请参阅stackoverflow.com/tags/do-notation/info 以及其中链接的答案。
let ... in ...只是一个表达式。表达式属于do块的“动作”部分。 -
do块中没有where。 -
缩进错误,
in应该比let缩进更多。原因是do块有一个let变体没有in。因此编译器将您的lets 解释为这样的变体,因为它没有立即看到in,然后下一行的in意外出现in)。否则不清楚代码有什么问题。
标签: haskell let do-notation