检查范围是否包含 Scala 中的值的通用方法

2024-07-04

我想编写一个通用类来保存范围的端点,但通用版本会出现编译错误:value >= is not a member of type parameter A

final case class MinMax[A <: Comparable[A]](min: A, max: A) {
  def contains[B <: Comparable[A]](v: B): Boolean = {
    (min <= v) && (max >= v)
  }
}

具体版本按预期工作:

final case class MinMax(min: Int, max: Int) {
  def contains(v: Int): Boolean = {
    (min <= v) && (max >= v)
  }
}

MinMax(1, 3).contains(2) // true
MinMax(1, 3).contains(5) // false

你们离得太近了。

In Scala我们有Ordering https://www.scala-lang.org/api/current/scala/math/Ordering.html,这是一个类型类 https://tpolecat.github.io/2013/10/12/typeclass.html,表示可以比较相等以及小于和大于的类型。

因此,您的代码可以这样写:

// Works for any type A, as long as the compiler can prove that the exists an order for that type.
final case class MinMax[A](min: A, max: A)(implicit ord: Ordering[A]) {
  import ord._ // This is want brings into scope operators like <= & >=

  def contains(v: A): Boolean =
    (min <= v) && (max >= v)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查范围是否包含 Scala 中的值的通用方法 的相关文章

  • 在特征中定义值比定义有什么优势吗?

    在 Scala 中 一个val可以覆盖一个def 但是一个def不能覆盖val 那么 声明一个特质有什么好处吗 像这样 trait Resource val id String 而不是这个 trait Resource def id Str
  • 为什么 Option 不可遍历?

    有没有什么合理性Option不存在Traversable 在 Scala 2 9 中 Seq Set 1 3 2 Seq 4 Option 5 flatten不编译并简单地让它实现Traversable对我来说 这个特质很合理 如果不是这样
  • 如何避免在 Scala 中编写令人困惑的 DSL

    我读过一些评论 指出 Scala 的灵活性使开发人员可以轻松编写难以理解和推理的 DSL DSL 之所以成为可能 是因为 we can 有时 https stackoverflow com q 1181533 5986907 omit 和括
  • Akka:缺少 akka.version

    我有一个 scala 项目 它在 IntelliJ 中运行良好 运行 调试配置设置为应用程序 现在我想创建一个 jar 来使用 java jar jar 运行它 这是一个 Maven 项目 而不是 SBT 我有三个模块 包括所有其他模块的顶
  • 协程内的具体化泛型参数不起作用

    我正在创建 http json 客户端 我将 Volley 与协程结合使用 我想创建通用的 http 客户端 这样我就可以在任何地方使用它 我创建了通用扩展方法来将 JSON 字符串解析为对象 inline fun
  • F# 泛型/函数重载语法

    我对如何在没有显式类型声明的情况下将函数标记为泛型感到困惑 a gt a let add a b a b 这给了我们 val add a int gt b int gt int 但是我们可以立即调用 add Hello World 现在 a
  • udf 没有可用于字符串类型的 TypeTag

    我不明白火花的行为 我创建一个 udf 它返回一个如下所示的整数 import org apache spark sql SQLContext import org apache spark SparkConf SparkContext o
  • 泛型类中可空的泛型字段

    我正在尝试做这样的事情 public class MySuperCoolClass
  • Java 泛型 - Java 是否需要支持本地定义的类型?

    我希望能在这里联系到 Java 泛型专家 假设您有一些类型化的课程 public interface SomeClass
  • 输入spark-shell时找不到spark提交

    我一直在按照本教程为 scala 安装 Spark https www tutorialspoint com apache spark apache spark installation htm https www tutorialspoi
  • 泛型和匿名类(错误还是功能?)

    由于 A 表达式 此代码无法编译 有趣的是 在 A 表达式预期中 List
  • 是否可以写一个不可变的双向链表?

    我觉得问这个问题有点愚蠢 但我目前正在学习函数式编程并完成了创建单链表的练习 这让我开始思考 是否有可能创建一个不可变的双链表 假设列表 A B 在构造时 A 需要了解 B 但 B 也需要了解 A 我一直在 Scala 中这样做 所以我不确
  • 如何强制 F[_] 成为 Monad 的实例

    我有以下类定义 final case class Creator F topic String discovery ServiceDiscovery F implicit sync Sync F import JsonDeserialize
  • 将 Json 转换为 Map[String, String]

    我有输入 json 像 a x b y c z 我想将此 json 转换为像 Map String String 这样的 Map 所以基本上是键值对的映射 我该如何使用 circe 来做到这一点 请注意 我不知道 Json 中将出现什么键
  • Scala 风格:for 与 foreach、filter、map 等

    scala 中对集合进行 高级迭代 的最佳风格是什么 在什么情况下我应该使用 for compression 什么时候我应该寻找替代的迭代方式 就风格而言 在Programming in Scala书中有一个例子 看起来几乎和下一个一样 f
  • 如何让 Squeryl 与 Play 一起使用!框架?

    我正在尝试学习如何使用 Play 和 Squeryl 制作一个简单的数据库应用程序 我已经根据 Play 教程制作了任务应用程序 但我想更改模型 架构 以便它使用 Squeryl 而不是 Anorm 我一直在寻找不同的教程 http squ
  • C : 在空数组中插入/获取元素

    我必须创建一个可以包含通用数据结构的通用数组 如何将通用结构放入 void 数组的空槽中 这是我的代码 struct CircularBuffer int E int S int length total number of item al
  • 如何使用 Spark SQL 解析 JSON 对象数组

    现在 JSON 数据如下 Id 11 data package com browser1 activetime 60000 package com browser6 activetime 1205000 package com browse
  • 为什么我无法初始化 Map? [复制]

    这个问题在这里已经有答案了 我想存储一组int String值 但是ints 不一定是增量的 这意味着数据可以是 lt 1 first gt lt 3 second gt lt 9 third gt 所以我正在尝试创建与Dictionary
  • Scala:使用具体类型实现 Map

    我在 Scala 类型系统中遇到了某种怪癖 这让我有点困惑 我正在尝试创建一个扩展 Map String String 的类 但我不太清楚如何以编译器接受的方式实现 方法 这是我现在的代码 class ParamMap val pairs

随机推荐

  • Java:什么是“for (;;)”[重复]

    这个问题在这里已经有答案了 有人可以帮我解释一下这条指令吗 为了 我遇到过几种这样的标记 比如在 facebook 的 ajax 代码和 Java 的并发内容中 无限循环 for 循环的三个部分中的每一个部分 for x y z 是可选的
  • Android应用程序启动图标大小[重复]

    这个问题在这里已经有答案了 遵循 Google 的指南 我已将 48x48 和 72x72 启动器图标添加到我的 mdpi 和 hdpi 屏幕项目中 但在某些情况下 图标的大小会被调整 例如 在我的 Acer Iconia A200 平板电
  • 在 WCF 服务关闭之前执行操作

    我有一个托管在 IIS7 中的 WCF 服务 该服务有一个静态类 其中包含包含字符串 某种日志 的静态列表 它定期将条目写入文件或数据库 但是 当 IIS 决定回收应用程序或出于任何原因终止时 静态字段中的条目将丢失 有什么方法可以处理服务
  • 在 Bash 中使用大小写表示数字范围

    我正在尝试使用以下方法进行操作case在 Bash 中 在 Linux 中 如果X在460到660之间 则输出X信息 如果 X 介于 661 和 800 之间 请执行其他操作 Etc 现在这就是我所拥有的 case MovieRes in
  • 如何循环调用分页函数?

    我正在尝试使用空气桌API https airtable com api从我的数据中检索记录 具体来说 是我在列单元格中的 URL 列表 我写了一个函数 get airtable records 通过以下方式进行 API 调用curl它可以
  • OpenCV 2.4.6 SIFT 关键点检测使用大量内存

    我们在 openCV 2 4 3 中使用 SIFT 我们决定升级到 openCV 2 4 6 升级后 openCV 2 4 6 中的内存使用量从约 150MB 跃升至 1 2GB 有人知道这是一个错误还是我们现在需要配置的东西吗 我们的图像
  • PHP url 函数和子域

    我有一个网站thenoblesite com 它有一些子域 即 download thenoblesite com壁纸 thenoblesite com etc 子域的页面位于主 htdocs 文件夹中 即 httpdocs downloa
  • 字符串的两半就地交错

    给定一个字符串even尺寸 说 abcdef123456 我如何将两半交错 这样same字符串将变成这样 a1b2c3d4e5f6 我尝试开发一种算法 但失败了 有人能给我一些吗hints至于如何进行 我需要在不创建额外的字符串变量或数组的
  • Android CardView 不适用于 Api 21

    我正在使用安卓CardView它在 Api 21 下完美运行 但是当我在 Api 21 即 Lollipop 上使用它时 XML 属性如下cardElevation cornerRadius不起作用 我究竟做错了什么 这是我的 XML 布局
  • 如何解决“您的系统管理员已将 Chrome 配置为打开备用浏览器进行访问”

    我正在尝试在 google chrome 中打开一个应用程序 当我启动 chrome 网站时 它会重定向到 IE 并在 chrome 中显示消息 您的系统管理员已将 chrome 配置为打开备用浏览器进行访问 如何克服这个问题 Behavi
  • Socket:Python中的2路通信

    我想要在 Python 中进行双向通信 我想绑定到一个客户端可以连接的套接字 然后服务器和客户端可以彼此 聊天 我已经有了基本的监听器 import socket HOST localhost PORT 50008 s socket soc
  • 让所有街道在 Google 地图视口中可见

    我正在尝试使用以下算法构建地图 等待平移或缩放发生 查询视口中可见的所有街道 范围 使用预定义的颜色为每条可见街道着色 Example 我想显示每条街道上的企业数量 或者每条街道上发生的犯罪数量 我有一个数据库 其中包含此类信息 街道名称
  • PHAsset(或 ALAsset)跨设备标识符

    我实际上正在创建一个 iOS 应用程序 并且想要在 SQLite 数据库中存储有关照片库图片的一些详细信息 我还希望能够在用户拥有的不同设备上共享这些数据 想象一下有人想要在他的 iPhone 上重新组织图片 并想要在他的 iPad 上检索
  • 计算已发布字符串中的行数

    我试过这个 PHP 中计算文本区域中的新行以调整容器大小 https stackoverflow com questions 1743745 count new lines in textarea to resize container i
  • 没有可编译的体系结构(ARCHS=i386、VALID_ARCHS=arm64 armv7 armv7s)

    Preface 我确实看过类似的问题 https stackoverflow com questions 22328882 xcode 5 1 no architectures to compile for only active arch
  • 在 Scala 中指定 lambda 返回类型

    注意 这是一个理论问题 我并不是试图解决任何问题 也不是试图达到任何实际效果 在 Scala 中创建 lambda 时使用 arguments gt expression语法 可以显式提供返回类型吗 Lambda 与方法没有什么不同 它们都
  • String.Format() 中的 CultureInfo.CurrentCulture 真的有必要吗?

    您认为确实有必要提供哪些IFormatProvider在方法中String Format string object 写完整的变体是否更好 String Format CultureInfo CurrentCulture String is
  • 如何在Android 10及更高版本中通过intent MediaStore.ACTION_IMAGE_CAPTURE获取图像URI

    对于版主 我知道已经存在这样的问题 但所有这些方法最终都会通过提供位图data getExtra data 这实际上只是thumbnail 我想要获取 URI 而不是位图 并且我需要获取实际图像的 URI 而不是其缩略图 方法可在2021
  • 在 Python 中运行 Bash 命令

    在我的本地计算机上 我运行一个包含此行的 python 脚本 bashCommand cwm rdf test rdf ntriples gt test nt os system bashCommand 这很好用 然后我在服务器上运行相同的
  • 检查范围是否包含 Scala 中的值的通用方法

    我想编写一个通用类来保存范围的端点 但通用版本会出现编译错误 value gt is not a member of type parameter A final case class MinMax A lt Comparable A mi