Ceylon not implemented error

Какъв е идиомът на 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