作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我第一次尝试使用隐式参数和变量,并且效果非常好
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/
我是一名优秀的程序员,十分优秀!