当前位置: 首页 > 知识库问答 >
问题:

使用改进的约束“正面”编译错误

东方吕恭
2023-03-14

我尝试这段简短的代码片段,其中我尝试使用优化库中的正类型约束整数类型(https://github.com/fthomas/refined).

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.验证[Int, xxx. Lala. X]val lala: X=fineVX

错误:(13,29)没有足够的参数用于方法应用:(隐式v:eu.timepit.refined.api.Validate[Int,xxx.Lala.X])类RefinePartiallyApplied中的[String,eu.timepit.refined.api.refined[Int,xxx.Lala.X]]。未指定的值参数v.val lala:X=refineVX

从中似乎缺少一个积极类型的验证实现。我想知道是否有人可以帮我找到一个积极类型的验证特征实例?或者我应该自己提供这样一个实例?

共有1个答案

梁丘高朗
2023-03-14

快速浏览一下精致自述中的类似示例,应该有助于解决您的问题:

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).)
 类似资料:
  • 我之前发布了一个类似的问题,这是固定的。然而,为了问这个问题,我简化了我最初的问题。但是,这个简单问题的解决方案似乎并没有解决我最初的问题 当我尝试这个简短的代码片段时,我尝试使用Interval.闭包类型从精炼库(https://github.com/fthomas/refined)约束一个Double类型,会产生一个编译错误。 显示此编译错误: 错误:(13,67)找不到参数v的隐式值:eu。

  • 我正在将错误消息添加到登录屏幕。 虽然代码运行良好,并且执行我希望它执行的操作。它会在执行时导致约束错误。 以下是受影响的约束: 下面是导致errorView出现的函数。 如何在不破坏约束的情况下更改约束? 我尝试self.view.update约束()-但是什么也没有做。我还尝试在添加约束之前删除它们,但是仍然有一个错误。 任何帮助都将不胜感激! 编辑: 我找到了一个Objective-c解决方

  • 我试图修复本页中提到的Jira中的一些错误,但当我试图运行SQL查询时,我得到了以下错误: 错误1064(42000):您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“constraint”附近使用正确的语法

  • 问题内容: 我正在研究触发器和约束。 我有一个使用触发器的问题(说实话,我不确定如何使用触发器。) 假设我们有一个教师表。 这个教师表包含Teacher_id,ssn,first_name,last_name,class_time 例如, 和 假设学生人数上限为25(学生人数上限由老师定义,因此可以是10、22、25 …等任意数字) 一个学生想添加鲍勃的班级。但是,我想触发拒绝添加学生的触发器。(

  • 合约文件目录 所有合约都位于项目的 contracts/ 目录中。 由于合约是用Solidity语言编写的,所有包含合约的文件都将具有 .sol 文件扩展名。 相关的 Solidity 库也将有一个.sol扩展名。 使用truffle init命令创建的空 Truffle 工程会生成一个用于部署的Migrations.sol 合约文件。 如果我们使用 Truffle Box 来创建工程,则会有多个

  • 我希望将clob列的约束更改为约束。但是,当尝试 或 我做错了什么?在这种情况下,我也必须使用临时栏吗?我知道使用temp列将数据类型从clob更改为varchar2的场景,但这里我只想更改约束。为什么这是不可能的? 提前感谢!