小编OpC*_*ega的帖子

如何使用Haskell动态调用函数

我希望根据关联列表中的内容动态调用函数.

这是半伪代码中的一个例子.listOfFunctions将传递给callFunctions.

listOfFunctions = [('function one', 'value one')
                   , ('function two', 'value two')
                   , ('function three', 'value three')]

callFunctions x = loop through functions
                  if entry found 
                  then call function with value
                  else do nothing
Run Code Online (Sandbox Code Playgroud)

这个问题的关键不在于循环列表,而是一旦我有了它的名字,它就是如何调用函数的?

考虑此用例以进一步说明.您打开命令提示符并显示以下菜单.

1:编写新的vHost文件

2:退出

您编写新的vHost文件,但未显示新菜单

1:输入新指令

2:写文件

3:退出

您为vHost输入一些新指令,现在可以编写该文件了.

程序不会盲目地写出它可能的每一个指令,而是只编写你提供的指令.这是关联列表的用武之地.编写一个巨大的if/then/else或case语句是疯狂的.循环遍历列表,查找添加了哪些指令并调用函数来相应地编写它们会更加优雅.

因此,循环,找到一个函数名,用提供的值调用所述函数.

感谢任何可以帮助解决这个问题的人.

编辑:

这是我提出的解决方案(建设性批评总是受欢迎的).

我导出了在关联列表中编写指令的函数,因为每个提供的答案都表示只包含函数是要走的路.

funcMap = [("writeServerName", writeServerName)
           ,("writeServeralias", writeServerAlias)
           ,("writeDocRoot", writeDocRoot)
           ,("writeLogLevel", writeErrorLog)
           ,("writeErrorPipe", writeErrorPipe)
           ,("writeVhostOpen", writeVhostOpen)]
Run Code Online (Sandbox Code Playgroud)

在实际写入主机的文件中,导入该文件.

我有一个名为hostInfo的关联列表来模拟将从最终用户收集的一些虚拟值和一个名为runFunction的函数,该函数使用edalorzo提供的技术来过滤这两个列表.通过匹配两个列表的键,我确保使用正确的值调用正确的函数.

import Vhost.Directive

hostInfo = …
Run Code Online (Sandbox Code Playgroud)

haskell

8
推荐指数
2
解决办法
2365
查看次数

django测试非字段验证错误

我有一个自定义验证函数,但我想使用 Django 提供的单元测试框架来测试它是否抛出了应该抛出的错误。

我可以直接调用该函数并以这种方式测试它,但这并不能确保它在视图中正确使用(即:我想进行集成测试)。

django 测试非特定字段验证错误的方法是什么?

例如,电子邮件字段将测试输入的文本是否是有效的电子邮件地址,但表单上方将显示非字段错误,与任何字段都没有关系。例如,它会说该电子邮件地址已被注册。

在测试应用程序时,如何测试这些非现场验证错误?

django django-testing

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

标签 统计

django ×1

django-testing ×1

haskell ×1