Используйте переменные класса в качестве констант в Scala

Даже если в другом ответе использовалось parseInt, лучше хранить переменные внутри кода

var x = 0;
var y = 0;

document.onkeydown = function(key){
    if (key.keyCode == 38){
        y -= 10;
    } else if (key.keyCode == 39){
        x += 10;
    } else if (key.keyCode == 37){
        x -= 10;
    } else if (key.keyCode == 40){
        y += 10;
    };
    
    document.getElementById("block").style.left = x+"px";
    document.getElementById("block").style.top = y+"px";
};
#block
{
  top: 0;
  left: 0;
  position: absolute;
  width: 30px;
  height: 60px;
  background: teal;
}
<div id="block">

21
задан Onorio Catenacci 29 April 2009 в 16:43
поделиться

3 ответа

You can define the constants in a companion object:

object Task { 
 val EmptyID = 0
 val EmptyDescription = "No Description"
}

And then reference them as Task.EmptyID and Task.EmptyDescription.

I think Scala 2.8 has support for default values.

41
ответ дан 29 November 2019 в 20:03
поделиться

В разделе «Программирование в Scala» см. Раздел 6.7, где объясняется цепочка вызовов конструктора. Основной конструктор описывается как «единая точка входа в класс».

1
ответ дан 29 November 2019 в 20:03
поделиться

См. Герман для ответа. Это происходит потому, что конструктор технически является частью статической области видимости. Другими словами, конструктор не может получить доступ ни к каким членам экземпляра, потому что экземпляр еще не был создан. Любые «члены класса» на самом деле являются членами экземпляра, поэтому код в вопросе не работает. Ответ Германа исправляет это, перемещая два соответствующих значения в объект-компаньон, что фактически делает их статическими членами класса Task (не совсем, но вы можете думать об этом так).

8
ответ дан 29 November 2019 в 20:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: