小编eli*_*rks的帖子

XCTAssert语法错误与数组速记表达式和方法调用

所以我正在深入研究XCTest的单元测试,并遇到了一些问题.

当我用内部的简写数组声明和方法调用编写XCTAssert语句时,Xcode中出现语法错误:

XCTAssert([self hasStrings:@[ @"foo", @"bar" ]]);
Run Code Online (Sandbox Code Playgroud)

在Xcode中编译错误:

Expected identifier or '('
Run Code Online (Sandbox Code Playgroud)

但是,如果我在表达式周围添加更多括号,它将起作用:

XCTAssert(([self hasStrings:@[ @"foo", @"bar" ]]));
Run Code Online (Sandbox Code Playgroud)

这是否与我的一些语法无法传递到宏有关?(假设XCTAssert是一个宏)

xcode objective-c xctest

6
推荐指数
1
解决办法
1239
查看次数

将 GADT 与 DataKinds 结合使用以实现函数中的类型级数据构造函数约束

我正在尝试将 GADT 与 DataKinds 结合使用,如下所示

\n
{-# LANGUAGE KindSignatures, DataKinds, GADTs #-}\nmodule NewGadt where\n\ndata ExprType = Var | Nest\n\ndata Expr (a :: ExprType) where\n  ExprVar :: String -> Expr Var\n  ExprNest :: Expr a -> Expr Nest\n\ndata BaseExpr\n  = BaseExprVar String\n  | BaseExprNest BaseExpr\n\ntranslate :: BaseExpr -> Expr a\ntranslate (BaseExprVar id) = ExprVar id\ntranslate (BaseExprNest expr) = ExprNest $ translate expr\n
Run Code Online (Sandbox Code Playgroud)\n

编译错误:

\n
/home/elijah/code/monty/src/NewGadt.hs:15:32: error:\n    \xe2\x80\xa2 Couldn\'t match type \xe2\x80\x98a\xe2\x80\x99 with \xe2\x80\x98\'Var\xe2\x80\x99\n      \xe2\x80\x98a\xe2\x80\x99 is a rigid type variable bound …
Run Code Online (Sandbox Code Playgroud)

haskell existential-type gadt data-kinds

5
推荐指数
2
解决办法
445
查看次数