考虑以下代码:
private def test(some:String*){
}
private def call () {
val some = Array("asd", "zxc")
test(some)
}
它打印expect String,找到Array[String]
Why?Scala变量不是数组吗?
笔记
我在堆栈溢出上发现了几个关于斯卡拉变量的问题,但所有这些问题都是关于调用Java varargs方法或将Scala列表转换为数组的。
从 Scala 2.13.0 开始,如果你使用一些:_*
,你会收到这个警告:
不推荐将显式数组值传递给Scalavarargs
方法(因为2.13.0
>),这将导致防御性拷贝;使用更高效的非复制ArraySeq。unsafeWrapArray
或显式toIndexedSeq调用
按照建议,使用
scala.collection.im可变.ArraySeq.unsafe包装数组
:
unsafeWrapArray(some):_*
另外,你应该得到的另一个警告是这个
过程语法已弃用:改为添加
:Unit=
以显式声明test
's返回类型
要解决此问题,请在函数的左括号前添加
=
:
def test(some:String*) = {
很简单:
def test(some:String*){}
def call () {
val some = Array("asd", "zxc")
test(some: _*)
}
问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。
问题内容: 码: 当我尝试: 我在Eclipse中收到错误。 但当: 一切都好。为什么会有这种差异?谢谢。 问题答案: 因为语法是特殊的语法糖,仅在初始化数组变量时才适用。这是因为任务本身缺少类型信息;但是在赋值的特殊情况下,类型是从变量中完全推断出来的。 在第一个示例中,编译器知道您要分配给它(是),因此允许使用此语法。在后者中,您无需初始化变量(并且由于Java类型推断的弱点,它甚至也无法完全
问题内容: 好的,所以我想将一个非常基本的数组传递到jquery数据attrubute服务器端,如下所示: 然后像这样回撤: 为什么这似乎会警告’[‘而不是’a’(请参阅JSfiddle链接) JSFiddle链接: http : //jsfiddle.net/ktw4v/3/ 问题答案: 它将变量视为字符串,其第零个元素为。 发生这种情况是因为您的字符串不是有效的JSON,它应使用双引号而不是单
这是我的第一个Java应用程序。我正在尝试创建一个产品(键)和它们的价格(值)的地图。文档上说我不能用doubles换钱,所以我得用bigdecimal。我现在完全不知道如何在我的方法和地图中使用BigDecimal。 寄存器类: 主类:
如何在JSP中分别显示id、txtfile和语句?如何将arraylist从servlet传递到JSP。 JSP:如何编辑我的JSP。我的JSP出现错误: 类型安全:未经检查的objectto arraylist强制转换
问题内容: 基本上我有一个ArrayList的位置: 在此之下,我调用以下方法: getMap()方法中的参数为: 我遇到的问题是我不确定如何在整个方法列表中传递该方法。 我试过了 但是getMap不接受,因为它不接受Objects []。 现在,如果我使用 它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加等等,但是数组的大小会有所不同。我只是不习惯整个概念 最简单的方法是什么