Мы используем методы класса / переменные экземпляра.В конце концов, класс - это объект, поэтому он может иметь методы.
Например, класс Rectangle имеет метод #origin: corner: так что вы можете написать
Rectangle origin: 0@0 corner: 100@100
для созданияПрямоугольник.Это просто сообщение #origin: corner:, отправленное объекту с именем Rectangle (класс - это объект!) С двумя точками в качестве параметров.
Переменные экземпляра на стороне класса работают почти так же.Класс, будучи объектом, может иметь переменные экземпляра.Из библиотеки SUnit:
TestCase class
instanceVariableNames: 'history'
, а затем класс TestCase предоставляет это обычным способом с помощью метода получения / установки (#history и #history:).
РЕДАКТИРОВАТЬ: @
Я использовал вызвал немало дискуссий.Это то, что называется двоичное сообщение , которое позволяет определять селекторы, которые выглядят так, как другие языки называют инфиксные операторы.Например, 3 + 4
или 0@0
.В случае @
класс Number
определяет метод с именем @
, принимающий параметр y
, определяемый как ^Point x: self y: y
- «вернуть точку, координата x которой является моим собственным значением, а координата y которой являетсяпараметр ".
Точка - упорядоченная пара, но, конечно, ничто не мешает определить версии более многомерных.Point
может определить метод с именем @
, который выглядит следующим образом, например: ^Triple x: self x y: self y z: z
- «вернуть точку в R ^ 3, координаты x, y которой являются моими собственными, а координата z является заданным параметром».