Недавно я узнал, что можно добавлять ограничения типа для структур, однако по какой-либо причине он не позволяет 0.0
в качестве законного значения по умолчанию для короткие поплавки, но это позволяет 100.0
.Поле, оцененное значениями (0.0), а не типа SHORT-FLOAT
я получаю следующее сообщение об ошибке при попытке запустить make-ship
сделать экземпляр ship
структуры в CLISP:
[4]> (make-ship)
*** - THE: #:ENERGY evaluated to the values (0.0), not of type SHORT-FLOAT
The following restarts are available:
ABORT :R1 Abort main loop
Может кто-то объяснить, что именно происходит, и почему я не разрешено использовать 0,0?
Вот код, который ведет себя плохо:
(defstruct ship
location ;; fields like these have an undecided type at the moment
(energy 0.0 :type short-float)
cargo
crew
shields
(hull-integrity 100.0 :type short-float))
Не полное объяснение, но вы пробовали различные суффиксы, например, '0.0d' и т. Д.? –
@ JoshuaTaylor Я не знал, что суффиксы были даже вещью ... –
См. Http://www.lispworks.com/documentation/HyperSpec/Body/02_cbb.htm. Я думаю, что он должен работать. –