Синтаксис Scala для функции бездействия? - PullRequest
8 голосов
/ 05 сентября 2011

Есть ли в Scala какой-либо стандартный способ указания функции, которая ничего не делает, например, при реализации черты?Это работает:

trait Doer {
  def doit
}

val nothingDoer = new Doer {
  def doit = { }
}

Но, возможно, есть более родственный способ формулирования ничего не делающего?

Правка Появились некоторые интересные ответы, и я добавлю немного квопрос в ответе.Во-первых, оказывается, что я мог бы использовать реализацию по умолчанию в Doer.Хороший совет, но вы не всегда этого хотите.Во-вторых, по-видимому, более идиоматический способ написания:

val nothingDoer = new Doer {
  def doit { }
}

В-третьих, хотя никто не предположил, что именно это, я обнаружил, что это также, кажется, работает:альтернатива?

(Я полагаю, что «: Единица», которую предложили несколько человек, на самом деле ничего не добавляет.)

Ответы [ 4 ]

11 голосов
/ 05 сентября 2011

Поскольку тип возвращаемого значения - Единица, обычно не используется =

val nothingDoer = new Doer {
  def doit {}
}
2 голосов
/ 05 сентября 2011

Если у вас часто есть объекты «ничего не делать», вы также можете использовать «ничего не делать» как реализацию по умолчанию:

2 голосов
/ 05 сентября 2011

Я не знаю более идиоматического способа сделать это (я не думаю, что есть эквивалент Python 'pass' т.е.).

Но вы можете использовать "Unit", чтобы указатьметод ничего не возвращает в черту:

def doit: Unit
0 голосов
/ 05 сентября 2011

Как правило, вы хотите что-то вроде:

trait Doer {
    def doit : Unit
}

Вы также можете рассмотреть вариант типа Option.

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