Scala 中缺少所有参数的部分应用函数

2024-04-04

根据我的理解,部分应用的函数是我们可以调用的函数,无需 传递所有/部分必需的参数。

def add(x:Int, y:Int) = x + y
val paf = add(_ :Int, 3)
val paf1 = add(_ :Int, _ :Int)

在上面的示例中,paf1 指的是部分应用的函数,缺少所有参数,我可以使用以下方式调用:paf1(10,20)并且可以使用调用原始函数add(10,20)

我的问题是,由于调用语法几乎相同,因此创建缺少所有参数的部分应用函数有什么额外好处?仅仅是将方法转换为一等函数吗?


Scala's def关键字是你定义的方式methods和方法不是功能(在斯卡拉)。所以你的add不是您的一流功能实体paf1是的,即使它们在产生结果时对其参数所做的操作在语义上是等效的。

Scala 会自动使用部分应用程序将方法转换为等效函数,您可以通过稍微扩展示例来看到这一点:

def add(x: Int, y: Int) = x + y
...
val pa2: (Int, Int) => Int = add
pa2: (Int, Int) => Int = <function2>

在此示例中,这似乎没有什么好处,但在许多情况下,存在指示需要函数的非显式约束(或更准确地说,在其他地方显式指定的约束),允许您简单地在中给出(类型兼容的)方法名称您需要功能的地方。

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

Scala 中缺少所有参数的部分应用函数 的相关文章

随机推荐

  • 如何使用 os.listdir 仅选择一种文件类型?

    连接同一图像的 10 个条带后 我想将它们转换为反射率 然后将它们除以 10 000 尽管如此 我的文件夹中有两种类型的文件 但我只想将代码应用于 my img 文件而不是 hdr 您知道我如何使用 os listdir 进行此选择吗 我的
  • Jenkins 多配置项目处理并发设备使用

    Case 我有一个詹金斯奴隶女巫在移动设备 android ios 上运行葫芦测试 为了区分测试在哪些机器 iOS 的 mac 或 Android 的 Linux 上运行 我还使用Throttle 并发构建插件 通过这种方式 我可以区分设备
  • Spring Boot + Spring Security + CORS 中没有“Access-Control-Allow-Origin”

    我正在尝试使用 Spring security 进行 CORS 这是我的 WebSecurityConfigurerAdapter Configuration public class SecurityConfig extends WebS
  • 仅允许从触发器内插入

    我是 SQL 编程新手 我在网上找不到这个问题的答案 我正在使用 pl pgsql 希望获得以下结果 我有一个具有某些属性的表 A 我应该随时更新此表 因此 每当进行可能影响 A 值的更改 在与 A 相关的其他表 B 或 C 中 时 都会触
  • 如何删除启动画面之前出现的白屏?

    打开 java 文件时 我首先看到空白屏幕 然后出现闪屏布局 我有java文件 new Handler postDelayed new Runnable Override public void run Task finish ARG SP
  • 与 HibernateTemplate 和 SessionFactory 的单个数据库连接

    在java方面 一切工作正常 但是当我查看V SESSION特殊的oracle表 以及记录任何登录或注销操作的日志表时 这是一场灾难 每个查询都会执行登录 注销操作 所以这是我的问题 有没有办法配置 Spring 与数据库有一个唯一的连接
  • 从 .vbs 文件调用 VBA 宏会引发 800A03EC 错误

    我正在尝试通过 VBS 文件 文件名 Check final vbs 运行 VBA 宏 这是代码 Option Explicit run macro Sub run macro Dim xl1 Dim sCurPath Dim xlBook
  • 空响应返回 204

    当我执行 GET 请求但没有找到任何数据时 我的控制器返回 204 Route user v1 controller public class UserLoginController Controller HttpGet public as
  • 使用 Moq 模拟存储库

    为了模拟存储库 我使用下面的代码 我不明白为什么变量empl总是null 你知道我错过了什么吗 Thanks TestMethod public void Test var employee new Employee EmployeeID
  • Plotly.express choropleth 仅显示一种颜色

    我正在尝试使用创建一个 choroplethplotly express 该图能够加载 但它只显示一种颜色 我可以将鼠标悬停在每个功能上 它会显示相关信息 但不以可变颜色显示 这意味着它正在读取 geojson 但无法正确显示 u geds
  • 情节子图与规格问题,值错误

    我正在尝试使用辅助 y 轴和绘图子图绘制 3 个子图 但无论我如何尝试 仍然会遇到此类错误 值错误 make subplots 的 specs 参数必须是维度为 3 x 1 的字典的 2D 列表 收到类型 的值 secondary y Tr
  • 捆绑 JavaScript 课程 Uncaught SyntaxError: Unexpected token <

    使用mvc4课程的bundle功能 未捕获的语法错误 意外的标记 加载时 和debug true 一切都像例外一样工作 我该如何解决该错误 或 者我可以禁用脚本的捆绑功能吗 Solved 重命名了捆绑包名称 使其与任何目录都不匹配 在回答导
  • unlink 和 rm 在 unix 上的区别

    这两个命令之间真正的区别是什么 为什么删除文件的系统调用叫unlink代替delete 你需要了解一些关于原始 Unix 文件系统的知识才能理解这个非常重要的问题 与同时代的其他操作系统 60 年代末 70 年代初 不同 Unix 没有将文
  • 为什么我的网络浏览器版本的 java 与命令行版本不同

    the Safari browser says I am running 7 But the command line says I am running 6 prg ceylon dist samples helloworld java
  • Angular 方式将表单数据提交到 iframe

    我有像下面这样的html
  • 定时器在待机模式下会发生什么情况? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 具有 Identity Server4 并发登录的隐式授予 SPA

    如何使用授权类型限制特定 SPA 客户端中每个客户端应用程序的 x 登录次数 隐式 这超出了身份服务器的范围 https github com IdentityServer IdentityServer4 issues 736 尝试过的解决
  • 如何在 SKSpriteNode 上创建脉冲效果?

    您好 我想了解如何创建视觉脉冲效果 如下面的视频所示 https www youtube com watch v uiHj KZWjpU https www youtube com watch v uiHj KZWjpU 我点击了视频中发布
  • 如何使用maven将本地jar添加到fat jar作为依赖项?

    我正在尝试构建一个胖罐子以便在其他地方使用它 I use maven assembly plugin为了那个原因
  • Scala 中缺少所有参数的部分应用函数

    根据我的理解 部分应用的函数是我们可以调用的函数 无需 传递所有 部分必需的参数 def add x Int y Int x y val paf add Int 3 val paf1 add Int Int 在上面的示例中 paf1 指的是