首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用精化约束“正”编译错误

使用精化约束“正”编译错误
EN

Stack Overflow用户
提问于 2016-12-14 20:11:08
回答 1查看 1.2K关注 0票数 1

我尝试使用这个简短的代码片段,其中我试图使用精化库(https://github.com/fthomas/refined)中的正类型来约束Integer类型。

代码语言:javascript
复制
package xxx

import eu.timepit.refined._
import eu.timepit.refined.api.{Refined, Validate}
import eu.timepit.refined.auto._
import eu.timepit.refined.numeric._
import eu.timepit.refined.api.Refined
import eu.timepit.refined.numeric.Interval

object Lala {
  type X = Integer Refined Positive
  def lala(x: Int): Unit = {
    val lala: X = refineV[X](x)
  }
}

在编译此代码段时,我会收到以下错误消息:

错误:(13,29)找不到参数v: eu.timepit.refined.api.ValidateInt,xxx.Lala.X val lala: X= refineVX的隐式值 错误:(13,29)方法应用的参数不足:(隐式v: eu.timepit.refined.api.ValidateInt,xxx.Lala.x)在RefinePartiallyApplied类中[String,eu.timepit.refined.api.RefinedInt,xxx.Lala.X]。未指定的值参数v. val lala: X= refineVX

其中似乎缺少了正类型的验证实现。我想知道是否有人能帮我找到一个正面类型的验证特性的实例?还是我应该自己提供这样的一个例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 20:38:21

快速查看精化自述中的类似示例将有助于解决您的问题:

代码语言:javascript
复制
import eu.timepit.refined._
import eu.timepit.refined.api.Refined
import eu.timepit.refined.auto._
import eu.timepit.refined.numeric._

// Int instead of Integer
type X = Int Refined Positive 

// refineV returns an Either[String, SomeType Refined Tag]
// (and uses a Validate[SomeType, Tag])
def foo(x: Int): Either[String, X] = refineV[Positive](x)

foo(5)  // Either[String,X] = Right(5)
foo(-1) // Either[String,X] = Left(Predicate failed: (-1 > 0).)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41151348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档