Więc starałem się pracować z ukrytych parametrów i zmiennych po raz pierwszy i to działa perfekcyjnieniejawne parametry konstruktora
class Test(implicit val a: Int) {
bar(5)
def bar(c: Int)(implicit d: Int): Unit = {
println(d)
}
}
Potem próbowałem go w jakiś bardziej skomplikowanego kodu
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 =
{
}
Ale teraz dostaję błąd
- not enough arguments for method createMap: (implicit w:
com.badlogic.gdx.physics.box2d.World)Unit. Unspecified value parameter w.
Nie można wiedzieć, dlaczego to nie działa, mogę napisać
createMap(this.world)
I wszystko jest dobrze, ale ponieważ ten świat jest ukryty (tak myślę?) Nie powinienem tam jej tam podawać. Co ja tu robię/rozumiem źle?
Mam nadzieję, że nie działają z ukrytych liczb w rzeczywistym projekcie. – ziggystar
To było tylko po to, aby przetestować zachowanie zmiennych niejawnych. Poza tym, dlaczego niejawne liczby całkowite są złe? Nie mam pojęcia, gdzie ich użyć, ale nigdy nie wiadomo. – Nozdrum
Zwykle przyjmuje się tylko niejawne argumenty o bardzo konkretnych typach. Liczby całkowite mogą być używane do wielu rzeczy, ale możesz mieć tylko jedną ukrytą wartość każdego typu. Jeśli masz funkcję przyjmującą domyślne int jako timeout, a inną przyjmującą domyślną int jako losową wartość początkową, może się zdarzyć, że druga funkcja uzyska niejawną wartość, która miała być limitem czasu. – ziggystar