Я попытался напечатать объект этого класса:стандарт (идиоматических) способ преобразования объекта в строку
define class <bill> (<object>)
slot num :: <string>;
slot ref :: <string>;
end class <bill>;
я могу сделать метод, как say
define method say (bill : <bill>) =>();
format-out("num:%s\n", bill.num);
format-out("ref:%s\n", bill.ref);
end method say;
, но я хочу способ преобразовать объект <string>
, который может быть использован как
format-out("%s\n", bill);
or
format-out("%s\n", as(<string>, bill));
or
format-out("%=\n", bill);
Я попытался
define method as(type == <string>, bill :: <bill>)
=> (s :: <string>);
let result :: <stretchy-vector> = make(<stretchy-vector>);
add!(result, bill.num);
add!(result, bill.ref);
join(result, " ");
end method as;
но:
format-out("\%s\n", as(<string>,bill));
У меня был этот результат
Object {<bill>} cannot be converted to class {<class>: <string>}
Object {<bill> 0x1ff8180} cannot be converted to class {class <string> 0x7f5d5c645c00}
Breaking into debugger.
Trace/breakpoint trap
An с этим:
format-out("%s\n", bill);
что результат:
{<bill> #x00000000025EF1B0}
Что я делаю неправильно? Каков стандартный (идиоматический) способ печати объекта?
Спасибо! Ошибка была в модуле импорта/экспорта – fraya