我正在尝试在我们的项目中使用scalaz验证并遇到以下情况:
def rate(username: String, params: Map[String, String]): ValidationNEL[String, Int] = {
val voteV:Validation[String, RateVote] = validate(params, "vote") flatMap {v: String => RateVote(v)}
val voterV:Validation[String, Sring] = validate(params, "voter")
...
}
Run Code Online (Sandbox Code Playgroud)
现在我必须返回包含可能的参数错误的ValidationNEL,如果有的话,或者使用经验证的参数来调用该方法:
storage.rate(username, voter, vote): Validation[String, Int]
Run Code Online (Sandbox Code Playgroud)
我知道,我可以使用| @ | 第一部分,但这个代码
(voterV.liftFailNel |@| voteV.liftFailNel) { (voter, rv) =>
storage.rate(username, voter, rv)
}
Run Code Online (Sandbox Code Playgroud)
会回来的ValidationNEL[String, Validation[String, Int]].有没有办法"扁平化"这个结果,以获得ValidationNEL[String, Int]?
当我得到时,我正在玩Scala REPL error: unbound wildcard type.我试图声明这个(无用的)函数:
def ignoreParam(n: _) = println("Ignored")
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
是否可以在不引入命名类型变量的情况下声明此函数?如果是这样,怎么样?
运行任何 SBT 任务(例如compile)后,scalafmt 会被执行并更改某些计算机上的行结尾(大多数计算机使用 Windows)。是否可以在 scalafmt.conf 或任何其他方式中设置行结尾?
谢谢。
我有两个 Mongo 模式:
用户:
{
_id: ObjectId,
name: String,
country: ObjectId // Reference to schema Country
}
Run Code Online (Sandbox Code Playgroud)
国家:
{
_id: ObjectId,
name: String
}
Run Code Online (Sandbox Code Playgroud)
我想获取所有国家/地区名称为“VietNam”的用户。
对于这种情况,我可以使用哪种查询(仅针对用户模式)?
我希望它看起来像这样的 SQL 查询:
SELECT *
FROM User
JOIN Country
ON User.country = Country._id
WHERE Country.name = 'VietNam'
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来让Jinja宏根据传递的对象类型调用不同的实现.基本上,标准的Python方法多态.现在,我正在使用类似于此的丑陋解决方法:
{% macro menuitem(obj) %}
{% set type = obj.__class__.__name__ %}
{% if type == "ImageMenuItem" %}
{{ imagemenuitem(obj) }}
{% elif type == "FoobarMenuItem" %}
{{ foobarmenuitem(obj) }}
{% else %}
{{ textmenuitem(obj) }}
{% endif %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
在纯Python中,人们可以使用模块环境,例如globals()[x+'menuitem'],这不是很漂亮,但效果非常好.我尝试使用Jinja上下文类似的东西,但后者似乎不包含宏定义.
有什么更好的方法来实现我所寻求的目标?
我有以下方法返回Play for Scala应用程序中的字符串列表:
def example = Action.async { request =>
val access = getAccess()
if (access > 0) {
val future = MyObject.intensiveMethod
future.map {
result => {
val list = result.asInstanceOf[List[String]]
val json = JsObject(Seq(
"list" -> Json.toJson(list)
))
Ok(json)
}
}
}
else {
val json = JsObject(Seq(
"msg" -> JsString("error!")
))
Ok(json)
}
Run Code Online (Sandbox Code Playgroud)
}
代码不会编译时出现以下错误,因为如果access = 0,则结果不是Future:
类型不匹配; 发现:play.api.mvc.Result required:scala.concurrent.Future [play.api.mvc.Result]
如何解决这个问题?
最后,Scala 2.12具有右偏置.我听说它可以用于验证目的,但我无法想象这一点.我无法找到好的榜样.
有人可以解释一下这个monad如何帮我验证吗?此增强的Either还可以涵盖其他用例吗?
我想使用 pyPDF 以编程方式编辑 PDF。目前,我正在努力解释各种 PDF 框(TrimBox、MediaBox 等)的尺寸。每个盒子有四个维度存储为四元组,例如:
TrimBox: 56.69 56.69 1040.31 751.18
Run Code Online (Sandbox Code Playgroud)
根据 PDF 规范,这些应该描述一个矩形,并且当然 (56.69, 56.69) 确定了该矩形的左上角。然而,(1040.31, 751.18) 是被解释为这个矩形的右下角,还是相对于左上角的向量?
显然,这个答案在排字工中是如此众所周知,以至于到目前为止我在任何地方都找不到明确的拼写。
scala ×5
asynchronous ×1
either ×1
future ×1
javascript ×1
jinja2 ×1
line-endings ×1
mongodb ×1
mongoose ×1
node.js ×1
pdf ×1
pypdf ×1
python ×1
sbt ×1
scalafmt ×1
scalaz ×1
types ×1
validation ×1