Есть слово self
. Рискуя создать ложное чувство уверенности в этом, я приведу вам пример, который предположительно делает то, что вы хотите:
shape: make object! [
x: 0
y: 0
draw: func [object [object!]] [
probe object
]
]
circle: make shape [
radius: 10
draw: func [] [
shape/draw self
]
]
rectangle: make shape [
draw: func [] [
shape/draw self
]
]
Здесь мы создали функции, которые принимают нулевые аргументы, вызывая функцию базового класса с соответствующим «self»
Остерегайтесь: как и другие слова, он становится связанным ... и переплетает палки. Это может быть сложно, как только вы начнете работать с абстракциями ...
selfWordAlias: func [] [
return 'self
]
triangle: make shape [
draw: func [] [
shape/draw get selfWordAlias
]
]
Звонок triangle/draw
, вероятно, удивит вас. Вы находитесь в методе объекта, а selfWordAlias возвращает слово "self". Но понятие self было захвачено и связано во время определения selfWordAlias, которое находилось в контексте глобальной системы. Так вот, что вы получите обратно.
Существуют инструменты для решения этой проблемы, но убедитесь, что у вас есть надежный контроль над Области применения в Rebol !