gpt4 book ai didi

scala - 弃用类构造函数参数

转载 作者:行者123 更新时间:2023-12-04 09:27:25 28 4
gpt4 key购买 nike

我有一个这样的课:

class Foo(x: Int, y: Int) {}


我要弃用 x。我尝试了这个:

class Foo(@deprecated("msg", "0.1") x: Int, y: Int)


在Scala 2.11中,我收到以下警告:

[warn] /tmp/zzz/src/main/scala/Foo.scala:1:12: no valid targets for annotation on value x - it is discarded unused. You may specify targets with meta-annotations, e.g. @(deprecated("msg", "0.1") @param)
[warn] class Foo(@deprecated("msg", "0.1") x: Int, y: Int) {
[warn] ^
[warn] one warning found


(我尝试了建议的语法,但这会导致编译错误)。我尝试过的语法适用于Scala 2.12。有没有一种方法可以同时使用2.11和2.12的方式淘汰构造函数参数?

最佳答案

这会在2.11中通过用xvar限定val来进行编译:

class Foo(@deprecated("msg", "0.1") var x: Int, y: Int) 
class Foo(@deprecated("msg", "0.1") val x: Int, y: Int)


但是,正如Andrey在评论中指出的那样,它并不弃用构造函数参数,而仅弃用了相应的自动生成的成员变量。要弃用构造函数参数,您可以尝试将 x移至不推荐使用的辅助构造函数:

class Foo(y: Int) {
@deprecated("msg", "0.1")
def this(x: Int, y: Int) = this(y)
}

关于scala - 弃用类构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50556312/

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