gpt4 book ai didi

scala - 将元组附加到元组的 MutableList 会出错

转载 作者:行者123 更新时间:2023-12-01 09:56:07 26 4
gpt4 key购买 nike

scala> val x = mutable.MutableList[(Int, Int)]()
x: scala.collection.mutable.MutableList[(Int, Int)] = MutableList()

scala> x += (1, 2)
<console>:10: error: type mismatch;
found : Int(1)
required: (Int, Int)
x += (1, 2)
^

最佳答案

将其解释为您尝试使用 2 个参数(而不是一个元组参数)调用 += 方法。

尝试以下方法之一

x += ((1, 2))

val t = (1, 2)
x += t

x += 1 -> 2 //syntactic sugar for new tuple

请注意,编译器无法判断您正在尝试使用单个元组参数调用该方法,因为存在多个 += 重载:

def +=(elem : A) : Growable.this.type
def +=(elem1 : A, elem2 : A, elems : A*) : Growable.this.type

如果这里没有第二次重载,编译器就可以解决。以下示例可能会阐明:

class Foo {
def bar(elem: (Int, Int)) = ()
def baz(elem: (Int, Int)) = ()
def baz(elem1: (Int, Int), elem2: (Int, Int)) = ()
}

以您调用 += 的方式调用 bar 现在可以正常工作,但会出现警告:

foo.bar(2, 3) //No confounding overloads, so the compiler can figure out that we meant to use a tuple here
warning: Adapting argument list by creating a 2-tuple: this may not be what you want.

以调用 += 的方式调用 baz 失败,出现类似的错误:

f.baz(3, 4)
error: type mismatch;

关于scala - 将元组附加到元组的 MutableList 会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com