Неявный класс в scala не показывает вывод, как ожидалось - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался запустить простую программу в scala с использованием неявного класса в scala. Ожидаемый результат программы - «CZF», то есть увеличение каждого символа на 1. Но когда я выполняю его в Eclipse IDE, он не возвращает ни результата, ни ошибки.

object ObjectImplitclass extends App{
  implicit class StringIncImplicitClass(s: String){
    def increment = s.map(c => (c+1).toChar)
    val result = "BYE".increment
    print(result)
}
}

Когда я пытался следующий кусок кода на терминале:

implicit class StringIncImplicitClass(s: String){
def increment = s.map(c => (c+1).toChar)
val result = "BYE".increment

Он вернул мне "CZF". Я новичок в синтаксисе scala, кто-нибудь может мне помочь, почему я не могу увидеть результат в IDE.

1 Ответ

3 голосов
/ 10 апреля 2020

В REPL вы оценили "BYE".increment сразу после того, как определили неявный класс, поэтому результат отображается немедленно.

В IDE вы написали:

object ObjectImplitclass extends App{
  implicit class StringIncImplicitClass(s: String){
    def increment = s.map(c => (c+1).toChar)
    val result = "BYE".increment
    print(result)
  }
}

, то есть вы определили неявный класс. .. но вы никогда не использовали в чем-либо. Если этот код точно такой же, как у вас в IDE, он должен был быть

object ObjectImplitclass extends App {
  implicit class StringIncImplicitClass(s: String) {
    def increment = s.map(c => (c+1).toChar)
  }
  val result = "BYE".increment
  print(result)
}

См. Различия в скобках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...