Цейлон не реализована ошибка

Что такое идиома Ceylon для обозначения того, что функция не реализована? Я часто хочу посмотреть, будет ли дизайн проверять тип, прежде чем решать проблемы с реализацией всех функций. Предположительно, это означает, что тело выдает ошибку, которая имеет тип Nothing и может быть назначена любой функции. Это также полезно для обмена примером кода, когда реализация не имеет значения.

Похоже, некоторые люди используют UnsupportedOperationException из Java следующим образом:

Integer add(Integer a, Integer b) {throw UnsupportedOperationException();}

Но это слишком многословно, чтобы привязываться к куче методов класса. Я ищу что-то похожее на симпатичное имя Scala ???, например:

def add(a: Int, b: Int): Int = ???

person drhagen    schedule 25.10.2014    source источник


Ответы (1)


На самом деле, nothing — это встроенный геттер верхнего уровня, который вы можете вызвать:

Integer add(Integer a, Integer b) => nothing;

Это может выглядеть как возвращаемый объект, но на самом деле он генерирует исключение во время выполнения, как только оно достигается.

person drhagen    schedule 25.10.2014
comment
Да, это хорошо, потому что при оценке будет выброшено исключение, и IDE выдаст предупреждение, которое служит напоминанием о том, чтобы реализовать его позже. - person gdejohn; 25.10.2014
comment
Я просто хочу добавить, что nothing вовсе не примитивно: это нормальное значение, реализован на обычном Ceylon, и вы также можете написать свой собственный. (Тем не менее, тип Nothing является «примитивным» — это единственный тип в языке, который не может быть выражен на цейлонском языке.) - person Lucas Werkmeister; 22.07.2015
comment
@lucas.werkmeister спасибо, я отредактировал свой ответ, чтобы уточнить это. - person drhagen; 08.08.2015