我创建了一个数据库,希望在其中有一个[(String,[String])]类型的字段。
share [mkPersist sqlSettings, mkMigrate "migrateAll"][persistLowerCase|
ConfigDB
numberOfParticipants Int
groupId Int
memberList [(String,[String])]
deriving Show
|]
然而,我收到一条错误消息:
尝试运行编译时代码时出现异常:无效字段类型>"[(String,[String])]"PSFail PSFail"PSFail\"(\\"\\",\\",Nothing)\"
错误似乎是由使用元组引起的,因为[String]工作得很好,但如果我写(String,String),编译器告诉我:
"不在作用域中:类型构造函数或类String,也许你指的是弦乐(从前奏曲中导入)"
在数据库中。坚持Sql我找到(PersistFieldSql a,PersistFieldSql b)=>PersistFieldSql(a,b)是一个实例,因此它应该可以工作。
此外,导入数据。Tuple没有帮上忙。我已导入数据库。坚持当然是Sqlite。
提前感谢
Sophia
在持久定义语法中嵌入复杂类型很棘手(有时甚至不可能)。我的建议是在Haskell代码中定义一个类型同义词,例如:
type MemberList = [(String, [String])]
然后在定义中使用该类型。