使用 _* 的 varargs 的 Scala 类型归属导致错误

2023-12-19

我对 Scala 可变参数有一个初步的了解:接受可变参数的方法的参数需要hint它是一个 varargs 使用_*。使用Scala 2.10.3,我定义了以下两个方法

scala> def method(varargs:Int*)(more:String*) = println(varargs,more)
method: (varargs: Int*)(more: String*)Unit
scala> val method2 = method(1,2,3)_
method2: Seq[String] => Unit = 

使用列表或范围直接调用它们效果很好

scala> val paramList = List("hi","ho")
paramList: List[java.lang.String] = List(hi, ho)

scala> method2(paramList)
(WrappedArray(1, 2, 3),List(hi, ho))

scala> val range = (1 to 5) map {_.toString}
range: scala.collection.immutable.IndexedSeq[String] = Vector(1, 2, 3, 4, 5)

scala> method2(range)
(WrappedArray(1, 2, 3),Vector(1, 2, 3, 4, 5))

为什么当我通过赋予参数来调用它们时_*,我收到错误?

scala> method2(paramList:_*)
<console>:11: error: type mismatch;
 found   : List[String]
 required: Seq[Seq[String]]
              method2(paramList:_*)
                      ^

scala> method2(range:_*)
<console>:11: error: type mismatch;
 found   : scala.collection.immutable.IndexedSeq[String]
 required: Seq[Seq[String]]
              method2(range:_*)
                      ^

method2不是接受重复参数的方法,它是具有单个参数类型的函数Seq[String].

你应该这样称呼它:method2(paramList)没有:_*.

不存在这样的事情function accepting repeated parameters in scala 2.10,但它存在于scala 2.9:

scala> def method(varargs:Int*)(more:String*) = println(varargs,more)
method: (varargs: Int*)(more: String*)Unit

scala> val method2 = method(1,2,3)_
method2: String* => Unit = <function1>

scala> val paramList = List("hi","ho")
paramList: List[java.lang.String] = List(hi, ho)

scala> method2(paramList:_*)
(WrappedArray(1, 2, 3),List(hi, ho))

注意推断的类型method2: Seq[String] => Unit in 2.10 vs String* => Unit in 2.9.

这不是一个有用的功能:你不能使用类型变量String* => Unit作为参数或返回值。实际上String* => Unit即使在2.9:

scala> def test(f: String* => Unit) = ()
<console>:1: error: ')' expected but '=>' found.
       def test(f: String* => Unit) = ()
                           ^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 _* 的 varargs 的 Scala 类型归属导致错误 的相关文章

  • 使用spark phoenix从表中读取rdd分区号为1

    当我运行我的火花代码时 val sqlContext spark sqlContext val noact table primaryDataProcessor getTableData sqlContext zookeeper table
  • 使用 scala 集合 - CanBuildFrom 麻烦

    我正在尝试编写一个接受任何类型集合的方法CC 并将其映射到一个新的集合 相同的集合类型但不同的元素类型 我正在挣扎 基本上我正在尝试实施map but 不在集合本身上 问题 我正在尝试实现一个带有签名的方法 它看起来有点像 def map
  • 类型级编程有哪些示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将
  • Typescript:隐式无参数函数类型

    我想要作为参数给出的函数的限定类型 我希望这种类型要么是一个没有参数的函数 返回一个包含参数的 void 函数 动作 要么是它返回自身的 void 函数 这是我想使用的代码 interface JsonArray extends Array
  • scala play框架如何对异步控制器进行单元测试

    使用 Scala play 2 5 版并尝试遵循以下文档中的单元测试控制器指南 https www playframework com documentation 2 5 x ScalaTestingWithScalaTest https
  • 如何在 apache Spark 作业中执行阻塞 IO?

    如果当我遍历 RDD 时 我需要通过调用外部 阻塞 服务来计算数据集中的值怎么办 您认为如何才能实现这一目标 值 Future RDD Double Future sequence tasks 我尝试创建一个 Futures 列表 但由于
  • Scalatest PlusPlay Selenium 无法调整窗口大小

    对此已经研究了一段时间 我似乎找不到使用 scalatest plus 调整窗口大小的方法 我发现在线搜索或文档的唯一方法http doc scalatest org 2 1 5 index html org scalatest selen
  • Akka Streams / HTTP:从响应中获取原始请求

    我有一个 Akka Streams 源 它会遍历流程并发布 HTTP 请求 source map toRequest via Http outgoingConnection host map toMessage 假设toRequest方法将
  • 在 Scala 中调用 WebSocket 中的方法

    我是 scala Play 框架和 Akka 的新手 我的函数定义为 def socket WebSocket accept String String request gt ActorFlow actorRef out gt MyWebS
  • 如何访问 Scala XML 中的父元素

    The scala xml包表示带有标记树节点的 XML 但是这棵树在 Scala 2 7 中是单向的吗 因为似乎没有办法访问Elem给定的父级Elem 这似乎同样适用于父母Document 例如 在 XOM 中你有getParent an
  • F# 查询,按单列对多个值进行分组

    我有一个 F sql 查询 需要对每组中的两列求和 let financials query for data in dbData do groupValBy data earning data losses data store into
  • 按字符分割字符串

    scala 有一个标准的分割字符串的方法StringOps split 但它的行为有点让我惊讶 演示一下 使用快捷便利功能 def sp str String str split toList 以下表达式全部计算结果为 true sp Li
  • Spark 数据帧:根据另一列的值提取一列

    我有一个包含带有连接价目表的交易的数据框 paid currency EUR USD GBP 49 5 EUR 99 79 69 客户已支付 49 5 欧元 如 货币 列中所示 我现在想将支付的价格与价目表中的价格进行比较 因此 我需要根据
  • 为什么你需要创建这些 json 读/写,而在 java 中你不需要创建这些 json 读/写?

    如果我错了 请纠正我 但是当使用 Java 和 Spring MVC 时 您不必创建这些额外的类来将 Java 类映射到 JSON 以及将 JSON 映射到类 为什么必须在 Play with Scala 中执行此操作 和Scala有关系吗
  • Python 检查整数输入

    我试图允许用户输入我的程序 但是当他们输入字符串时我的程序失败 这是一个更大的程序 但正在尝试纠正问题 到目前为止我已经 data raw input Enter a number number eval data if type numb
  • Scala sbt 项目给出 NullPointerException?

    当我运行命令时sbt clean compile run在我的 sbt 项目中 它给出了空指针异常 这是控制台输出 info Loading project definition from home dnilesh workspace wi
  • 在 DataFrame.withColumn 中,如何检查列的值是否为 null 作为第二个参数的条件?

    如果我有一个名为 df 的 DataFrame 如下所示 a1 a2 foo bar N A baz null etc 我可以有选择地替换值 如下所示 val df2 df withColumn a1 when a1 N A a2 这样 d
  • META-INF/服务应该在 sbt 中的哪里

    META INF 目录应该放在哪里 以便 sbt 获取自定义配置 我在尝试使用 ServiceLoader 时遇到了这个问题 并且我试图在 META INF services 中创建自定义服务 如果您将 META INF 文件夹放在 src
  • 在案例类中重载 unapply 方法:scala

    考虑下面的代码 case class User id Int name String object User def unapply str String Some User 0 str Scala 抱怨 错误 无法解析重载未应用 案例类
  • 返回“!”是什么意思?铁锈中的意思是什么?

    最近我在 Rust 中发现了一个返回的函数 而不是基本类型 如下所示 fn my function gt 这是什么意思 我无法在中找到有关此的信息锈迹斑斑的书 https doc rust lang org book 该函数使用此类指标返回

随机推荐

  • .NET (C#) 中的“StandardIn 尚未重定向”错误

    我想使用标准输入做一个简单的应用程序 我想在一个程序中创建一个列表并在另一个程序中打印它 我想出了以下内容 我不知道 app2 是否有效 但是在 app1 中我收到异常 StandardIn 尚未重定向 在 writeline 上 在 fo
  • 如何修复 WordPress 自定义主题以与插件一起使用?

    这是我第一次尝试编写自定义 WordPress 主题 而且我已经快完成了 与任何事物一样 存在一些错误 但我尝试了几种不同的选项来修复它们 但没有成功 链接为 www studiosimplicit com wp 我的第一个问题是事件页面上
  • 我的对象在 Three.js 中不反射光线

    我在 Three js 场景中有一些基于 CubeGeometry 的网格 它们都反映了我在全局使用的 PointLight 但其中之一 仅用 THREE Geometry 通过代码添加顶点和面 手工 制作的 没有反映出来 即使它没有颜色
  • 使用 openssl C 进行 AES(aes-ige-128、aes-ige-192、aes-ige-256)加密/解密

    最近 我终于 在 stackoverflow 用户 WhozCraig 的帮助下 开始在 CBC 模式下使用 AES 现在 我想做完全相同的事情 但使用 AES IGE 我看了一下openssl 1 0 1e test igetest c并
  • 获取当前页面并移动到Primeng数据表中的特定页面

    我正在使用 primefaces primeNg 的数据表 我可以获取当前所在页面并以编程方式将数据表设置为特定页面吗 我看到数据表使用了分页组件 但是如何使用 ViewChild访问它 任何帮助将不胜感激
  • 在 Objective-C 类中使用时,无法在调试区域中看到 Swift 对象层次结构

    我的问题可能很简单 但我却迷失了方向 任何评论 想法 帮助 预测都会非常有用 这是我的课程 试用SwiftClass swift import Foundation objc public class TrialSwiftClass NSO
  • CAML > 通过 URL 获取项目

    此 CAML 是否可以正常工作 我用 u2u 尝试过 但它不显示 URL 列 我收到此错误 System ApplicationException 一个或多个字段类型未正确安装 请转到列表设置页面删除这些字段
  • 为什么 crypt/blowfish 使用两种不同的盐生成相同的哈希值?

    这个问题与 PHP 的实现有关crypt http php net manual en function crypt php 对于这个问题 salt的前7个字符不算在内 所以一个salt 2a 07 a 的长度被认为是 1 因为它只有 1
  • SVN 外部意外状态问题

    我正在尝试SVN External 我想要做的是拥有一个外部文件夹并将库从那里复制到我的 Lib 文件夹中 I went to SVN Externals and there added the lib folder and path to
  • 我应该始终使用 override 上下文关键字吗?

    我知道override引入 contextual 关键字是为了编写更安全的代码 通过检查virtual具有相同签名的函数 但我对此感觉不太好 因为它对我来说似乎是多余的override每次我想覆盖virtual功能 不使用是一个坏习惯吗ov
  • 如何在不显示窗口的情况下运行PowerShell脚本?

    如何才能运行一个电源外壳 http en wikipedia org wiki Windows PowerShell脚本而不向用户显示窗口或任何其他标志 换句话说 脚本应该在后台安静地运行 而不向用户发出任何信号 不使用第三方组件的答案需额
  • 使用键打印字典中的最高值[重复]

    这个问题在这里已经有答案了 我的字典是这样的 A 4 B 10 C 0 D 87 我想用它的键找到最大值 用它的键找到最小值 输出将是这样的 最大 87 键是D 分钟 0 键是C 我知道如何从字典中获取最小值和最大值 有没有办法在一个语句中
  • IDictionary 或 NameValueCollection

    我目前正在编写一个接口 允许应用程序将异常数据发送到中央存储库以用于支持目的 我对如何传递额外的上下文数据感到困惑 public interface IExceptionNotifier void Notify Exception ex N
  • 通知中的音乐播放器控制

    如何在 Android 中设置带有播放 暂停 下一个和上一个按钮的通知 我是 Android 新手 也是堆栈溢出新手 所以请耐心听我说 我设置了歌曲开始播放时的通知 如下所示 SuppressLint NewApi public void
  • MemoryError - 如何使用 Python 通过 Google Drive SDK 下载大文件

    从 Google 云端硬盘下载大文件时 我的内存不足 我假设tmp content read 1024 不起作用 但如何解决呢 谢谢 def download file service file id drive file service
  • bat文件中设置cygwin环境变量

    我需要设置几个应该在 cygwin shell 中可用的环境变量 我尝试跑步 c Program Files x86 Microsoft Visual Studio 10 0 VC bin amd64 vcvars64 bat在 bashr
  • 如何检测zstd压缩?

    我目前正在开发一个 python 应用程序 它可以与 facebook api 一起使用 众所周知 facebook热爱自己的技术 正在与zstd合作进行数据压缩 问题 facebook 要么返回带有正常 json 的未压缩响应 要么如果响
  • 如何获取sql作业中step1到step2的值

    我需要创建一个 SQL 作业 Step1 在 TaskToProcess 表中插入一行并返回 ProcessID PK 和 Identity Step2 检索生成的进程 IDstep1并将值传递给 SSIS 包并执行 SSIS 包 这在 S
  • 有没有可以在 Mono 上运行的 F# IDE?

    我在 Mac 上使用 F 我想知道 kbow 是否有任何可以在单声道 不是通用编辑器 上工作的 F IDE 似乎有一个MonoDelvelop 插件 http artwild blogspot com 2008 08 f addin for
  • 使用 _* 的 varargs 的 Scala 类型归属导致错误

    我对 Scala 可变参数有一个初步的了解 接受可变参数的方法的参数需要hint它是一个 varargs 使用 使用Scala 2 10 3 我定义了以下两个方法 scala gt def method varargs Int more S