在 scala 中将其别名为 self =>

2023-12-27

一些 Scala API 别名this to self, 例如,

trait Function1[-T1, +R] extends AnyRef { self =>

我知道该怎样this别名通常有效,但没有看到像 Function1 这样的特征如何从中受益。函数1不使用self除了最初提到的之外,它的定义中的任何地方都可以,那么它的目的是什么?

之前已经问过这个问题的变体,但答案并不直接适用。答案已经讨论了自我类型和内部类,但我不知道这如何适用于这里。


See https://github.com/scala/scala/blob/2.10.1/src/library/scala/Function1.scala#L8 https://github.com/scala/scala/blob/2.10.1/src/library/scala/Function1.scala#L8它说的地方

 // GENERATED CODE: DO NOT EDIT. See scala.Function0 for timestamp.

该代码由同一生成器生成Function0通过Function22。不知怎的,当它去Function5你开始看到self https://github.com/scala/scala/blob/2.10.1/src/library/scala/Function5.scala#L26正在使用:

self.apply(x1, x2, x3, x4, x5)).curried

所以我怀疑它更容易self =>始终包含在生成器模板中。

这里是commit https://github.com/scala/scala/commit/072455265526c994fb39221624209a3180b41837#src/library/scala/Function1.scala这会添加自我引用。提交消息实际上解释了为什么它对 n >= 5 执行不同的操作,我引用:

FunctionN,其中 N > 4,静态创建的类要少得多 动态创建更多对象的费用(这似乎是合理的 考虑到此类功能可能很常见)。这也允许 在 FunctionN 中柯里化 N > 8,而不会遇到文件名长度 限制。

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

在 scala 中将其别名为 self => 的相关文章

  • 无法在 Scala 中使用 Apache Commons CLI Option.builder()

    在 Spark shell 或应用程序 用 Scala maven 构建编写 中 我无法使用 Apache Commons CLI 包中的静态构建器方法 我已确认我将 jar 包含在类路径中并且可以访问Option类以及包中的其他类 例如O
  • 编译具有多个参数的案例类会导致 java.lang.StackOverflowError

    我有以下带有大量参数 150 的案例类 在使用 sbt 版本 0 14 编译期间导致 java lang StackOverflowError 异常 类定义 case class TestClass Param1 String Param2
  • 使用 xgboost 的 Spark scala sbt 构建失败

    build sbt 清理包 给出以下错误 Resolving org fusesource jansi jansi 1 4 warn warn UNRESOLVED DEPENDENCIES warn warn ml dmlc xgboos
  • 什么是可堆叠修改?

    我读过一本关于 Scala 的书 里面提到了可堆叠修改 using traits 什么是可堆叠修改它们的用途是什么 区分可堆叠修改 无论如何在 scala 中使用该术语 的基本品质是 super 根据特征的混合方式动态受到影响 而一般来说
  • Scala 无法推断

    我有一个非常简单的 Spark 代码片段 它在 Scala 2 11 上运行 并在 2 12 后停止编译 import spark implicits val ds Seq val toDF col1 ds foreachPartition
  • Scala 中 def 和 val 的区别

    循环定义如下 def loop Boolean loop 当x定义为 def x loop然后控制台中会显示 x Boolean and 当x定义为 val x loop然后就进入无限循环 我知道 def 正在使用按名称调用 而 val 正
  • Scala REPL 中的类型信息

    如果我使用 F 解释器 我可以定义一个简单的函数 如下所示 gt Function to check if x is an integer multiple of y gt let multipleOf x y x y 0 val mult
  • Scala:如何检查 Seq 中的所有项目是否唯一?

    是否有更惯用且可能更快的方法来检查 a 中是否存在重复项Seq 比这个 mySeq size mySeq toSet size 这会更快 因为它可以提前终止 def allUnique A to TraversableOnce A val
  • 有没有办法从 Scala 中的 Manifest[List[X]] 中提取项目类型?

    我知道某个东西是基于我传递给方法的清单的 List 但我需要知道该列表是什么类型的项目 这些信息是否存储在清单中的某个位置并且您可以将其取出吗 如果没有 关于如何解决该问题有什么建议吗 基本上 我有一个 Map Manifest Blah
  • 在 C# 中是否有更简单的方法为函数指定别名

    背景 在我移植的API中 有大量以sqlite3 为前缀的函数 它们被封装在一个名为Sqlite3的类中 因此函数调用为Sqlite3 sqlite3 我创建了许多别名调用 类似于以下内容 C alias for call public s
  • Scala 2.11 LinkedList 已弃用,我应该使用什么?

    根据the docs http www scala lang org api current index html scala collection mutable LinkedList scala collection mutable L
  • 重载“apply”方法时:光滑的错误消息“值元组不是对象的成员”

    我需要有能力创造一个User对象通过提供除id在某些情况下 使得User对象负责为自己分配一个自动生成的值 为此 我重载了伴随对象中的 apply 方法 如下所示 但这会导致编译时错误 value tupled is not a membe
  • 使用 Intellij 调试 Scala 宏

    我有一个 sbt 项目 我运行 gen idea 来设置它以与 Intellij 12 4 一起使用 在一个项目中是我的主代码 另一个项目中有我的宏代码 当尝试通过以下测试文件调试我的宏时http docs scala lang org o
  • 有没有办法匹配规范中 Mockito 模拟对象的按名称调用参数?

    我正在使用一些方法测试一个对象和另一个对象之间的交互呼唤名字论据 但是 我不知道如何为该按名称调用参数创建参数匹配器 假设这是模拟对象的签名 def fn arg1 gt String arg2 Int Any 然后我真正想做的是测试是否使
  • Scala 中的部分排序集合

    我正在尝试对链表节点的集合进行排序 该集合包含来自多个链表的节点 必须在每个列表中维护排序 但跨列表的排序并不重要 PartialOrdering T 似乎是自然的选择 但我在 Scala 中找不到任何支持它的标准函数 例如 sort只需要
  • 创建通用 Json 序列化函数

    是否可以使用 Play Framework 2 2 在 Scala 中创建一个通用函数 将任意对象序列化为 JSON 而无需提供编写器或格式化程序 例如 此非通用代码将创建给定客户的 JSON 响应 import play api libs
  • Scala:返回布尔值的模式匹配的缩写形式

    我发现自己经常写这样的东西 a match case b gt do stuff case gt do nothing 有没有更短的方法来检查某个值是否与模式匹配 我的意思是 在这种情况下我可以写if a b do stuff 但是如果模式
  • 找出用于制作 JAR 的 Scala 版本

    我试图弄清楚使用哪个 Scala 版本进行编译A jar 我有两个版本 一个来自我的 ivy2 存储库 另一个来自 Maven 运行后jar xf A jar 我苦苦寻找scala and version 但什么也没发现 grep ri s
  • 如何隐藏 Akka 远程 Actor 来查找?

    我正在运行 Akka 2 0 2 微内核 并希望为不受信任的远程参与者实现身份验证方案 首先想到的是设置一个身份验证参与者 当身份验证成功时 该参与者会返回对工作参与者的引用 但是 我应该如何保护工作参与者不被简单地通过 actorFor
  • 如何在 Scala Slick 中运行补丁/部分数据库更新?

    我们想运行补丁 部分UPDATE使用 Slick 3 0 0 以便我们只修改记录中的某些字段 确切地说哪些字段将被更新只有在运行时才知道 例如 对于一个REST PATCH request http restcookbook com HTT

随机推荐

  • SqlBulkCopy - 给定的 ColumnName 与源或目标中的任何列都不匹配

    我正在尝试使用 SqlBulkCopy 将数据复制到 SQL 数据库表中 但它 错误地 说列不匹配 他们确实匹配 如果我使用断点来查看正在映射的列的名称 它们是正确的 错误消息显示了列的名称 并且它是正确的 这是我的方法 我有一个相同的方法
  • 根据String生成唯一的Hash码

    我有以下两个字符串 var string1 MHH2016 05 20MASTECH HOLDINGS INC Financialshttp finance yahoo com q is s mhhEDGAR Online Financia
  • 将数据框折叠成单行并基于 R 行创建新列

    我有一个包含对象名称和该对象的统计矩列表的数据框 如下所示 Object Mean IQR Skew x 1 1 1 y 2 2 2 z 3 3 3 我想要的是为每一行创建带有统计矩和对象名称前缀的列 就像这样 xMean xIQR xSk
  • 如何编写递归打印程序

    Gurus 我想知道如何编写一个打印的递归函数 1 12 123 1234 例如 display 4 应该打印 1 12 123 1234 Code include
  • Redux router - 刷新后如何重放状态?

    我有一个多步骤表单应用程序 我正在努力思考如何保存我的 redux 状态并在刷新后重播它 在应用程序中后退 前进按预期工作 但浏览器刷新后 我之前的状态为空 理想情况下 我希望能够将先前的状态保存在与路径相关的会话存储中 以便稍后重播 但我
  • 在 HTML 画布中创建链接

    是否可以从 canvas 元素中呈现的文本创建 html 链接 没有简单的方法 您必须将链接文本绘制到画布上 然后检查鼠标单击情况 这是一个演示 html 页面
  • 与泛型的多重绑定

    我正在尝试创建一个Multibinder
  • ASP Classic 应用程序中的多部分/表单数据和 UTF-8

    我有一个问题我真的不明白 我正在尝试在 ASP 经典应用程序中上传文件 而不使用外部组件 我还想发布一些将存储在数据库中的文本 文件上传完美 我正在使用以下代码 问题是其他表单输入字段 我使用的是 UTF 8 但它们最终并不是 UTF 8
  • 后期绑定onclick事件

    以下是我的 javascript 的一部分 使用 jquery list a b c for var i 0 i lt list length i a click here a click function foo list i appen
  • Java中如何实现“按引用调用”?

    Java中如何实现 按引用调用 假设我们使用该术语的方式与自 1960 年代以来同行评审的计算机科学文献中使用该术语的方式相同 请参阅这个维基百科页面 https en wikipedia org wiki Evaluation strat
  • 在 MFC 应用程序中显示文本

    我需要在 MFC 应用程序中显示文本 我有一个示例文本 例如 在 mfc 应用程序中显示文本 假设我打算在其中绘制此文本的客户端窗口非常小 水平 以至于在一行中唯一可以容纳的文本是 显示文本 不显示 mfc 应用程序 字样 我的问题是 如何
  • pjsip 2.5.5 构建错误

    我正在尝试为 android 构建 pjsipNDK r13b 标准构建就像 configure android with opus home user pjsip pjproject opus dev lib工作完美 但我需要几个TARG
  • 如何使用另一个数组的长度来初始化 Rust 中的数组?

    我想初始化一个数组 其长度等于另一个数组的长度 fn foo array i32 let mut sum 0 array len 它会出错 error E0080 constant evaluation error gt test rs 2
  • Pyspark:在数据帧的不同组上应用 kmeans

    使用 Pyspark 我想将 kmeans 单独应用于数据帧组 而不是立即应用于整个数据帧 目前 我使用 for 循环对每个组进行迭代 应用 kmeans 并将结果附加到另一个表 但是有很多组会很耗时 有人可以帮我吗 多谢 for cust
  • 如何使图像在图像墙内反弹?

    我面临这个问题 在动画过程中 我希望鱼图像在背景图像 池塘 中移动 并且每当它撞到墙壁或图像边界时它就会弹开 使用svg方法和javascript方法 非常感谢任何可以提供帮助的人 再次感谢您花时间阅读并帮助解决这个问题
  • 如何将临时 MySQL 表转储到文件中?

    有没有一种方法可以创建转储 导出 保存临时 MySQL 表到磁盘上的文件中 sql 文件 类似于 mysqldump 创建的文件 抱歉 我第一次没有正确阅读这个问题 无论如何 我能想到的最好的方法就是使用SELECT INTO OUTFIL
  • mongodb 从一个值获取整个文档

    我想从单个值获取 mongodb 文档的所有值 例子 id id name name description description invite invite support server server developer develop
  • 同一行有多个命令

    我一直在尝试找到一些可以让我在 Vim 中的同一行上运行多个命令的东西 类似于在 nix 系统中使用分号来分隔命令或 在Windows中 有没有办法做到这一点 A bar 将允许你这样做 从 help bar 可用于分隔命令 因此您可以在一
  • IoC 容器的使用;特别是温莎

    我认为这个问题的答案是如此明显 以至于没有人费心写这个 但已经晚了 我真的无法理解这个问题 我一直在阅读 IoC 容器 在本例中为 Windsor 但我不知道如何从代码的各个部分与容器进行通信 我得到了 DI 我已经做了穷人 DI 空构造函
  • 在 scala 中将其别名为 self =>

    一些 Scala API 别名this to self 例如 trait Function1 T1 R extends AnyRef self gt 我知道该怎样this别名通常有效 但没有看到像 Function1 这样的特征如何从中受益