works:programmer:java:scala:increase-enum

Пример кода для увеличения Enum на цифру

Писалось для знакомого студента, не смотрите на избыточный код.

object BikeDrivingSkill extends Enumeration {
  type BikeDrivingSkill = Value;
  val Novice, Advanced, Expert = Value;
}
 
class Human(var name: String) {
  override def toString(): String = s"Привет меня звать $name.";
  def tellAboutSelf(): Unit = println(this.toString());
  def getName(): String = name;
  def setName(value: String): Unit = name = value;
}
 
class Bicyclist(val _name: String, var skill: BikeDrivingSkill.BikeDrivingSkill) extends Human(_name) {
  import BikeDrivingSkill.*;
  override def toString(): String = {
    var skill = this.skill match {
      case Novice   => "новичёк"
      case Advanced => "умею водить велосипед";
      case Expert   => "отличо управляю велосипедом"
      case whoa     => "Unexpected case: " + whoa.toString
    };
    return s"${super.toString()} И я ${skill}.";
  }
  def train(): Unit = {
    if (this.skill == BikeDrivingSkill.Expert) {
      println("Мне не нужно больше тренероваться, я и так эксперт.");
    } else {
      println("Я пошел тренероваться.")
      val nextId = this.skill.id + 1 // извлечём номер Advanced = 2  // следующий номер Expert = 3
      this.skill = BikeDrivingSkill(nextId) // по номеру достанем значение
    }
  }
}
 
object Main extends App {
  val unit = new Bicyclist("Egils Levits", BikeDrivingSkill.Advanced);
  unit.tellAboutSelf();
  unit.train();
  unit.tellAboutSelf();
  unit.train();
}
works/programmer/java/scala/increase-enum.txt · Last modified: 2021/12/09 09:14 by Chugreev Eugene