gpt4 book ai didi

scala - 隐式构造函数参数

转载 作者:行者123 更新时间:2023-12-03 01:10:15 24 4
gpt4 key购买 nike

所以我第一次尝试使用隐式参数和变量,并且效果非常好

class Test(implicit val a: Int) {

bar(5)

def bar(c: Int)(implicit d: Int): Unit = {
println(d)
}
}

然后我在一些更复杂的代码中尝试了它

class GameScreen(val game : Game)(implicit val batch: SpriteBatch, implicit val world: World, implicit val manager: AssetManager) extends Screen {

val camera : OrthographicCamera = new OrthographicCamera

createOpenGLStuff()
createMap()

def createMap(implicit w : World) : Unit =
{
}

但现在我收到错误

- not enough arguments for method createMap: (implicit w: 
com.badlogic.gdx.physics.box2d.World)Unit. Unspecified value parameter w.

我不知道为什么这不起作用,我可以写

createMap(this.world)

一切都很好,但由于 this.world 是隐式的(我认为?)我不需要在那里指定它。我在这里做/理解错了什么?

最佳答案

您需要删除括号

class GameScreen(val game : Game)(implicit val batch: SpriteBatch, implicit val world:    World, implicit val manager: AssetManager) extends Screen {

val camera : OrthographicCamera = new OrthographicCamera

createOpenGLStuff()
createMap //this works

def createMap(implicit w : World) : Unit =
{
}

但是,createMap 方法必须执行一些副作用,因此在没有括号的情况下调用它并不是一件好事。

我建议更改为:

def createMap()(implicit w : World) : Unit = {
...
}

这样,您就可以保持原来的调用语法:createMap()

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

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