我可以将任意函数传递给 Scala 中的另一个函数吗?

2023-11-22

我是 Scala 的新手,能够将函数传递给其他函数非常巧妙——但是我可以传递一个随意的函数引用另一个函数?所述函数参数的数量将是固定的(也就是说,我也很好奇是否也可以传递具有任意数量的函数)。我总是被类型错误绊倒。我尝试过使用Any但这似乎没有帮助。

例如,我有以下代码:

class CodeRunner(val user_defined: (Int) => Unit) {
  def run(input: Int) = {
    user_defined(input)
  }
}

def arbitrary_code(input: Int) = { println("Running with input " + input) }

val d1 = new CodeRunner(arbitrary_code)

d1.run(4)

我得到:

Running with input 4

现在,假设我想传递以下函数:

def arbitrary_code(input: String) = { println("Running with input " + input) }

我怎样才能改变我的CodeRunner类来处理两者?


我怎样才能改变我的CodeRunner类来处理两者?

您可以将任意类型设置为该类的参数:

class CodeRunner[T](val user_defined: (T) => Unit) {
  def run(input: T) = {
    user_defined(input)
  }
}

def arbitrary_code(input: Int) = { println("Running with input " + input) }

val d1 = new CodeRunner(arbitrary_code)

d1.run(4)

def arbitrary_code2(input: String) = { println("Running with input " + input) }

val d2 = new CodeRunner(arbitrary_code2)

d2.run("hello")

请注意,类型d2 is CodeRunner[String]不可分配给d1这是CodeRunner[Int].

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

我可以将任意函数传递给 Scala 中的另一个函数吗? 的相关文章

  • Spark RDD默认分区数

    版本 Spark 1 6 2 Scala 2 10 我正在执行以下命令spark shell 我试图查看 Spark 默认创建的分区数量 val rdd1 sc parallelize 1 to 10 println rdd1 getNum
  • 如何向列表添加值>

    我需要将派生类的元素添加到抽象类的共享指针列表中 我一直在尝试这个 我知道我正在尝试在下面的示例中创建抽象类的实例 但我不知道如何使其工作 简化的类如下所示 using namespace std class Abstract public
  • Scala - 如何解决“值不是 Nothing 的成员”错误

    此示例代码基于 Atmosphere 类 但如果有人可以让我了解该错误的一般含义 我想我可以找出任何特定于 Atmosphere 的解决方案 val bc BroadcasterFactory getDefault lookup broad
  • 新式(“内联”)宏需要 scala.meta

    我刚刚更新到 scala meta 2 0 0 M1 和最新的 scala 2 12 3 现在宏不再编译 我所做的唯一更改是将元版本从 1 8 0 更改为 2 0 0 M1 错误 新式 内联 宏需要 scala meta 有谁知道是否有快速
  • javascript - setTimeout() 与 setInterval()

    之间的主要和次要区别是什么setTimeout and setInterval 我在网上搜索了一下 但它让我很困惑 它们之间有什么区别 主要区别是 setInterval fires again and again in intervals
  • Scala:具有复杂结构的树插入尾递归

    我正在 scala 中创建自定义对象树 并且我的插入方法引发堆栈溢出 因为它不是尾递归 但是 我不太清楚如何使其尾递归 我见过使用 累加器 变量的相关示例 但它们要么是只能相乘和覆盖的整数之类的东西 要么是我在适应树时遇到困难的列表 这是我
  • 使用 Akka 玩 2.5 - 找不到参数超时的隐式值:akka.util.Timeout

    我正在尝试使用 Play 2 5 测试 Akka 但遇到了一个似乎无法解决的编译错误 我正在关注 Play 文档中的此页面 https playframework com documentation 2 5 x ScalaAkka http
  • Python Tkinter,停止线程函数

    我目前正在为 3D 打印机开发 GUI 并且遇到如何停止线程函数的问题 我希望能够单击 GUI 中具有另一个功能的按钮 该按钮将阻止线程函数通过串行端口发送 G 代码字符串 目前 该函数已合并线程 以允许在打印期间触发其他函数 我非常感谢有
  • 通用特征的隐式转换

    我正在实现一个数据结构 并希望用户能够使用任何类型作为密钥 只要他提供一个合适的密钥类型来包装它 我有这个关键类型的特质 这个想法是进行从基类型到键类型的隐式转换 反之亦然 实际上 只使用基类型 该特征看起来像这样 trait Key T
  • Scala 如何忽略 Java 的检查异常?

    例如如果调用 JavaThread sleep这会抛出一个已检查的InterruptedException来自 Scala 源文件 然后不需要将调用包含在 Scala 中try catch Scala 如何删除将调用包围在 a 中的规则tr
  • 如何捕获 Oozie Spark 输出

    有没有办法捕获spark的输出然后将其输入到shell上 我们当前正在使用 scala 创建 jar 文件 并希望我们的 Spark 输出成为 shell 输入 我的想法是使用 wf actionData spark XXXX var 我只
  • strlen(s) 和 (strlen)(s) 之间有什么区别吗? [复制]

    这个问题在这里已经有答案了 在 bstrlib c bstring 库 中 有几个地方在函数调用周围放置了括号 什么目的 代码片段 bstring bfromcstr const char str bstring b int i size
  • 为什么我的函数将布尔值更改为“on”?

    所以我是 php 编程世界的新手 我正在在线学习和其他形式等 但我找不到任何东西来帮助回答我的问题 这就是我在这里的原因 任何帮助当然不胜感激 谢谢 我想将下面的代码变成我可以调用的函数 它的工作原理如下所示 如果我选中表单中的复选框 它会
  • 嵌套辅助函数和性能

    嵌套辅助函数对于使代码更易于理解非常有用 谷歌甚至建议在他们的应用程序中使用嵌套函数时尚指南 https google styleguide googlecode com svn trunk javascriptguide xml Nest
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • 为什么《Scala 中的函数式编程》一书的“无异常处理错误”一章中没有提到“scala.util.Try”?

    在 Scala 中的函数式编程 一书中的 无异常处理错误 一章中 作者给出 从函数体抛出异常的问题 Use Option如果我们不关心实际的异常 Use Either如果我们关心实际的异常 But scala util Try没有提到 从我
  • Scala 和变量中的模式匹配

    我是 Scala 新手 有点想知道模式匹配是如何工作的 想象一下我有以下内容 case class Cls i Int case b Cls i gt Ok case e Cls gt Ok case f Cls gt Ok case s
  • Scala Tuple2Zipped 与 IterableLike zip

    两种实现有什么区别 这个比那个好吗 有一篇博客文章说 Tuple2Zipped 性能更好 但没有提供原因 并且查看源代码我没有看到差异 val l1 List 1 2 3 val l2 List 5 6 7 val v1 l1 zip l2
  • 如何在 F# 中执行 Seq.takeWhile + 一项

    我想编写一个使用谓词过滤序列的函数 但结果还应该包括谓词返回 false 的第一个项目 如果 F 中有一个break关键字 逻辑将是这样的 let myFilter predicate s seq for item in s do yiel

随机推荐

  • 以编程方式获取 GPU 利用率

    是否有获取 GPU 当前负载的标准方法 我正在寻找类似于显示 CPU 的任务管理器的东西 GPU Z 等实用程序显示了这个值 但我不确定它是如何得到这个值的 我目前对 AMD 显卡特别感兴趣 任何指示都会有帮助 如果没有干净的 API 方法
  • Flask-sqlalchemy 查询日期时间间隔

    我用flask sqlalchemy定义了一个表 显示如下 class Notes db Model id db Column db Integer primary key True notes db Column db Text null
  • 具有多态类型的 STUArray

    我想使用以下方法实现一个算法ST单子和STUArrays 我希望它能够与两者一起使用Float and Double data 我将演示一个更简单的示例问题 计算记忆值scanl 0 我知道这可以解决 无需STUArray 仅用作示例 LA
  • Bootstrap 轮播全屏

    我试图让引导程序轮播中的图像显示全屏 但一直无法弄清楚 我已经为此工作了一段时间 但完全陷入困境 现在我只有一张图片 但一旦它起作用我会添加更多
  • 解释C++中语句和表达式的区别

    我试图彻底理解 a 之间的区别陈述 and an 表达但即使读完这个答案我还是觉得很困惑表达与陈述看看以下内容 std cout lt lt Hello there 我可以说这是一个声明 因为它以分号但我也可以说这是一个表达式 因为我有一个
  • Hadoop HADOOP_CLASSPATH 问题

    这个问题并不是指在整个集群中分发 jar 供工作人员使用它们 它指的是在客户端计算机上指定一些附加库 更具体地说 我尝试运行以下命令来检索 SequenceFile 的内容 path to hadoop script fs text pat
  • 对于单个布局 XML 文件来说,多少个 ViewStub 太多了?

    我在 XML 文件中定义了布局 base layout xml 其中可能包含20 ViewStub除了 3 5 个其他视图 例如ImageView and a LinearLayout含3 5个ImageButton views 我应该关心
  • 跨多列排列的唯一约束

    给定 Postgres 数据库中的以下三列 第一 第二 第三 如何创建一个约束以使排列是唯一的 E g If foo bar shiz 存在于数据库中 bar shiz foo 将被排除为非唯一 您可以使用 hstore 创建唯一索引 CR
  • 如何让 Jenkins 从代码覆盖率中排除整个文件夹?

    我试图弄清楚如何从 jacoco 由 Jenkins 启动 生成的代码覆盖率报告中排除文件夹列表 似乎可以排除类 但不能排除文件夹 这对我来说很烦人 因为我已经开始使用一个相当大的库用于在线支付系统 运行这些单元测试意味着不断在该平台上创建
  • lua中分割字符串并存储在数组中

    我需要分割一个字符串并将其存储在一个数组中 这里我使用了 string gmatch 方法 它精确地分割字符 但我的问题是如何存储在数组中 这是我的脚本 我的示例字符串格式 touchedSpriteName Sprite 10 rose
  • 找出真实的文件类型

    我正在开发一个处理文件上传的 ASP 网页 仅允许上传某些类型的文件 例如 XLS XML CSV TXT PDF PPT 等 我必须确定文件是否确实具有与扩展名显示的类型相同的类型 换句话说 如果一个木马程序被重命名为无害 pdf并上传后
  • 将参数传递给 threading.Thread

    我在 Windows 上使用 Python 3 我在用threading Thread动态运行一个函数 我可以带或不带参数调用它 我正在设置一个事物列表 其中第一项是定义路径的字符串 其他参数将在列表中稍后列出 所以 args 可能等于 C
  • SQL Server - 如何查找我的表上的依赖表?

    Using SQLServer 我有一张桌子user id name email 还有一些其他的表 大约200多个表 其中一些使用user id作为外键cascade delete 所以 我想找出 哪些表使用这个外键 user id 我正在
  • 有没有办法减慢网络爬虫的速度,以便它能够获取代码?

    我写了一个宏去WU获取历史数据 大部分情况下 它是有效的 但是 我认为宏运行速度太快 无法从网站获取数据 https www wunderground com history daily us tx el paso KELP date 20
  • 谷歌翻译获取当前语言

    在网上找到任何可以帮助我的东西之后 我正在使用多语言网站的当前功能 function googleTranslateElementInit new google translate TranslateElement pageLanguage
  • 当另一个单元格更改时,在单元格中输入当前日期

    我有一个 Google 电子表格 用于跟踪客户端请求的应用程序配置信息的状态 例如 文本转到按钮上 我的顶部有一个 状态 列 下面的行中有一个 范围列表 数据验证单元格 使用的范围有 与客户 与我 已完成 我的右侧还有一列 用于手动添加上次
  • 如何将 PySpark 数据帧的每个非字符串列与浮点常量相除或相乘?

    我的输入数据框如下所示 from pyspark sql import SparkSession spark SparkSession builder appName Basics getOrCreate df spark createDa
  • Jhipster + REST 客户端 + 身份验证

    我需要了解如何验证 REST 客户端 可能是 Paw 可能是 Android 应用程序 使用 AFNetworking 和 jHipster 的 iOs 应用程序 我认为 更一般地说 使用 spring boot 我不是这方面的专家 虽然我
  • 使用 useEffect 更新 useReducer 'state'

    在我的应用程序中 我使用 React Hooks Context API 现在 每当我的 Provider 组件安装时 我都需要将从 localStorage 获取的数据分配给initialState carts state carts 如
  • 我可以将任意函数传递给 Scala 中的另一个函数吗?

    我是 Scala 的新手 能够将函数传递给其他函数非常巧妙 但是我可以传递一个随意的函数引用另一个函数 所述函数参数的数量将是固定的 也就是说 我也很好奇是否也可以传递具有任意数量的函数 我总是被类型错误绊倒 我尝试过使用Any但这似乎没有