关于 scala.math.Integral 的问题

2024-06-19

有什么方法mkNumericOps andmkOrderingOps of scala.math.Integral http://www.scala-lang.org/api/current/scala/math/Integral.html我们该如何使用它们?

我知道可以声明函数和对象方法implicit并用于隐式转换。但我不明白为什么特征方法被宣布implicit.

顺便说一句,可以类方法被宣布implicit too?


首先我们来看看他们的声明:

implicit def mkNumericOps (lhs: T): IntegralOps
implicit def mkOrderingOps (lhs: T): Ops

它们是隐式的,这意味着它们的目标是提供一些自动值或转换。请注意,它们都从T到其他类型,其中T是特征的类型参数:Integral[T].

所以,如果你有Integral[Int], then mkNumericOps会给你一个自动转换Int to IntegralOps。这意味着您将能够从以下位置调用方法IntegralOps or Ops on an Int(或者无论你的类型是什么Integral).

现在,让我们看看这些方法是什么:

def % (rhs: T): T
def * (rhs: T): T
def + (rhs: T): T
def - (rhs: T): T
def / (rhs: T): T
def /% (rhs: T): (T, T)
def abs (): T
def signum (): Int
def toDouble (): Double
def toFloat (): Float
def toInt (): Int
def toLong (): Long
def unary_- (): T

这些来自IntegralOps,这延伸了Ops。关于它们的一个有趣的事情是它们中的许多已经定义在Int!那么,如何以及为何使用它们呢?这是一个例子:

def sum[T](list: List[T])(implicit integral: Integral[T]): T = {
    import integral._   // get the implicits in question into scope
    list.foldLeft(integral.zero)(_ + _)
}

所以,给定任何类型T其中有一个Integral[T]隐式可用,您可以将该类型的列表传递给sum.

另一方面,如果我使我的方法特定于该类型Int,我可以不用写它Integral。另一方面,我无法写出对两者都适用的东西Int and Long and BigInt,因为它们不共享定义方法的共同祖先+(更不用说“零”了)。

The foldLeft上面的内容实际上可以翻译为:

list.foldLeft(integral.zero)((x, y) => mkNumericOps(x).+(y))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 scala.math.Integral 的问题 的相关文章

  • 在 Play2 和 Scala 中解析没有数据类型的 JSON

    people name Jack age 15 name Tony age 23 name Mike age 19 这是我试图解析的 json 示例 我希望能够对每个人进行 foreach 操作并打印他们的姓名和年龄 我知道当 json 数
  • 配置Scala工作表的工作目录

    我希望 Scala 工作表 和 Scala 解释器 的工作目录是 Eclipse 项目路径而不是 Eclipse 安装目录 我怎样才能 非编程方式 实现这一目标 我知道我可以使用System setProperty user dir 但恕我
  • 如何在Slick 3.0.0中使用StaticQuery?

    在 Slick 2 1 中 我使用以下代码从文件执行 sql 查询 def fetchResult T sql String implicit getResult GetResult T List T val query Q queryNA
  • 根据 Slick 中的 Id 选择单行

    我想根据 Id 查询用户的一行 我有以下虚拟代码 case class User id Option Int name String object Users extends Table User user def id column In
  • java.lang.OutOfMemoryError:Scala 上超出了 GC 开销限制

    我是 Scala 开发人员 我在Routes它包含的文件1008行如果我添加另一行 则会抛出下面的错误 Uncaught error from thread sbt web scheduler 1 shutting down JVM sin
  • Scala:如何转义文字中的反引号?

    Scala 中的文字允许将标识符定义为这样answer https stackoverflow com a 6576663 5826349描述 有没有办法在文字中转义反引号 做类似的事情 val hello world hello worl
  • 为什么 Scala 选项的 foreach 比 get 更好?

    为什么使用foreach map flatMap等被认为比使用更好get对于 Scala 选项 如果我使用isEmpty我可以打电话get安全 好吧 这又回到了 告诉 不要问 考虑这两行 if opt isDefined println o
  • scala 贷款模式,可选函数参数

    我有一个贷款模式 该模式应用函数 n 次 其中 i 是递增变量 偶尔 我希望传入的函数能够访问 i 但我不想要求传入的所有函数都需要定义一个参数来接受 i 下面的例子 def withLoaner n Int gt op Int gt St
  • Scala:如何获取数据框中的行范围

    我有一个DataFrame通过运行创建sqlContext readParquet 文件的一个 The DataFrame由 300 M 行组成 我需要使用这些行作为另一个函数的输入 但我想以较小的批次进行操作 以防止 OOM 错误 目前
  • 在 sbt 中定义自定义测试配置

    我需要在 sbt 中定义一个运行测试的自定义测试配置 但需要一些额外的设置 我一直在环顾四周 试图弄清楚如何做到这一点 但我似乎无法做到这一点 我想做的是这样的 gt test这将运行正常的测试任务并且 gt pipelinetest这与测
  • 为什么scala不允许在trait中定义lazy val?

    我尝试用a来定义一个特质lazy val trait MyTrait lazy val something Int object SomeThing extends MyTrait override lazy val something I
  • 包含一些 F[_] 的元组/hlist 上的通用变换/折叠/映射

    我最近问映射并减少 折叠 scalaz Validation 的 HList https stackoverflow com questions 26410100 并得到了关于如何转换固定大小的元组的一个很好的答案Va T 这是一个别名sc
  • 如何找出哪个依赖项导致特定库被下载?

    运行我的 SBT 项目时 控制台输出中有一行 info downloading http repository nexus content groups public org jboss netty netty 3 2 3 Final ne
  • 缓存隐式解析

    为了减少项目的编译时间 我缓存了通过隐式查找解析的某些类型类 但这看起来有点麻烦 因为直接的实现不起作用 scala gt implicit val x String implicitly String x String null 隐式查找
  • 为什么 Vector[Option[Int]] 上的 flatMap 其映射器函数结果不是 Vector[Option[Int]] 有效?

    例如 Vector Some 1 Some 2 Some 3 None flatMap n gt n 产生一个Vector 1 2 3 而不是给出错误 正如我在其他语言中看到的那样 flatMap当你有一个产生嵌套的映射器函数时使用 所以我
  • 作为单例集合的选项 - 现实生活中的用例

    标题几乎概括了这一点 Option作为单例集合有时会令人困惑 但有时它允许一个有趣的应用程序 我脑子里有一个例子 并且想了解更多这样的例子 我唯一的例子是运行for对的理解Option List T 我们可以执行以下操作 val v Som
  • 通过Listener获取Spark thrift服务器查询中读取的行数

    我正在尝试为我们的 ST 服务器构建一个监控系统 到目前为止 诸如记录查询 检索的行 红色和花费的时间之类的事情都很好 我已经实现了一个自定义侦听器 我能够毫无问题地检索查询和时间 侦听SparkListenerSQLExecutionSt
  • 在 Scala 中定义具有多个隐式参数的函数

    如何定义具有多个隐式参数的函数 def myfun arg String implicit p1 String implicit p2 Int doesn t work 它们必须全部放入一个参数列表中 并且该列表必须是最后一个 def my
  • 我需要比较两个数据帧以进行类型验证并发送非零值作为输出

    我正在比较两个数据帧 基本上 这些是两个不同数据源的模式 一个来自 hive 另一个来自 SAS9 2 我需要验证两个数据源的结构 因此我将模式转换为两个数据帧 它们是 SAS 架构将采用以下格式 scala gt metadata sho
  • 如何在 Scala 中跳过可选参数?

    给定以下带有可选参数的函数 def foo a Int 1 b Int 2 c Int 3 我想保留默认值a但将新值传递给b and c仅通过位置赋值 而不是通过命名赋值 即以下任何语法都可以 foo 5 7 foo 5 7 Scala 可

随机推荐

  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • Capistrano for Rails 3.1

    我正在使用 Rails 3 1 和 Capistrano 我明白了 没有这样的文件或目录 public images public stylesheets 和 public javascripts 的错误 错误 在网上搜索了一下 发现很多博
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • Google Sheet:如何在 Google Sheet 公式中查找给定数据集(日期值对)的最高值以及日期?

    我在 Google Sheet 中有以下日期值对格式的数据 Date Value 1 8 2021 1301 85 1 11 2021 1303 9 1 12 2021 1320 05 1 13 2021 1291 55 1 14 2021
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 为什么混合插值和表达式是不好的做法

    来自文档 在表达式内嵌入插值标记 Note AngularJS 指令属性采用任一表达式or带有嵌入表达式的插值标记 已经被考虑了不好的做法将插值标记嵌入表达式中 AngularJS 开发人员指南 插值 https docs angularj
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 要在空白页面上呈现的 Joomla 模块或组件

    我开发了一个 Joomla 模块 它提供表单 处理其发布数据 进行一些计算并显示结果 该模块包括一个用于打印结果的按钮 我目前正在使用 JavaScript 打开一个新窗口 粘贴相关的 HTML 并打开打印对话框 我更愿意为打印视图提供一个
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 从网络中的另一台计算机访问本地GAE SDK服务器

    我有开发服务器 来自 google appengine sdk 在我的 Ubuntu 计算机上运行 我可以通过导航到 localhost 8080 来访问我的网站 我想从网络中的另一台计算机 装有 Vista 操作系统 访问该站点 ifco
  • Teradata:如何使用查询获取服务器名称

    如何在 Teradata 中使用查询获取服务器名称 也就是说 如果我在 开发 服务器上编写查询 它应该返回开发服务器名称 例如 在 Sybase 中 我们将使用 select servername TD 中没有像 servername 这样
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 在多个网页(.cshtml 文件)中使用 Razor @functions

    我有以下功能 我希望可用于我的 asp net 网页 2 应用程序中的多个 cshtml 视图 如何使该功能可用于应用程序中的任何视图 而不是仅一个视图 functions public bool DisplayButton String
  • 您的backbone.js 项目的最佳实践是什么?

    尽管我已经关注backbone js 几个月了 并且学习了大量教程 但我仍然对在更大的项目中使用backbone 或我的相关技能 没有足够的信心 我的经验是 backbone js 教程的质量差异很大 有些已经过时了 尤其是backbone
  • ClickHouse新手,无法创建本地主机

    我是 clickhouse 的新手 正在尝试开始 我已经安装了能够在我的计算机 ubuntu 16 04 上使用它所需的所有软件包 但是当我使用 clickhouse client 命令时 我得到以下信息 ClickHouse client
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • 向特定客户端发送消息以及消息发送用户

    我是 SignalR 的初学者 我创建了一个基于 SignalR 的基本聊天应用程序 我面临的问题是我想向特定客户端以及发送消息的用户发送消息 这个怎么做 我知道要向特定客户端发送消息 我们可以这样做 Clients Client Cont
  • 关于 scala.math.Integral 的问题

    有什么方法mkNumericOps andmkOrderingOps of scala math Integral http www scala lang org api current scala math Integral html我们