yesod-sqlite 模板中的 "import Database.Persist as X hiding (get)" 如何工作
How does "import Database.Persist as X hiding (get)" from the yesod-sqlite template works
我正在使用 yesod-sqlite 模板并尝试在测试中使用 Database.Persist
中的 get
函数。
这是我的代码:
[Entity _ task] <- runDB $ selectList [TaskName ==. name] []
...
user <- runDB $ X.get (taskUserId task)
我得到的错误是:
my_project/test/Handler/TaskSpec.hs:47:29: error:
Not in scope: ‘X.get’
No module named ‘X’ is imported.
在 TestImport.hs
文件中,我看到了这一行:
import Database.Persist as X hiding (get)
根据我的理解,它应该隐藏 HSpec 模块中的 get
函数,因此我可以使用 X.get
进行数据库检索。我也尝试了 Database.Persist.get
和 get
相同的结果。
所以我的疑问是:TestImport.hs
中的那一行在做什么?
导入行正在导入 Database.Persist
模块中的所有内容 除了 get
,可选限定。
如果我理解正确,你只想导入 get
合格的,其他所有不合格的,你可以使用:
import Database.Persist hiding (get)
import qualified Database.Persist as X (get)
我正在使用 yesod-sqlite 模板并尝试在测试中使用 Database.Persist
中的 get
函数。
这是我的代码:
[Entity _ task] <- runDB $ selectList [TaskName ==. name] []
...
user <- runDB $ X.get (taskUserId task)
我得到的错误是:
my_project/test/Handler/TaskSpec.hs:47:29: error:
Not in scope: ‘X.get’
No module named ‘X’ is imported.
在 TestImport.hs
文件中,我看到了这一行:
import Database.Persist as X hiding (get)
根据我的理解,它应该隐藏 HSpec 模块中的 get
函数,因此我可以使用 X.get
进行数据库检索。我也尝试了 Database.Persist.get
和 get
相同的结果。
所以我的疑问是:TestImport.hs
中的那一行在做什么?
导入行正在导入 Database.Persist
模块中的所有内容 除了 get
,可选限定。
如果我理解正确,你只想导入 get
合格的,其他所有不合格的,你可以使用:
import Database.Persist hiding (get)
import qualified Database.Persist as X (get)