Це команда PDL::Objectsp, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
PDL::Objects -- Об'єктна орієнтація, що це таке і як її використовувати
ОПИС
Це ще треба правильно написати. [Крім того, чи є вагомі причини, які ми не рекомендуємо
збереження додаткових даних об’єкта в хеші заголовка?]
Спадкування
Існують в основному дві причини для підкласів piddles. Перше - це просто ви
хочете мати можливість використовувати свої власні процедури, як-от
$piddle->щось()
але не хочеться зіпсувати простір імен PDL (справді гідна мета!). Інше це
ви хочете надати спеціальну обробку деяких функцій або більше інформації про дані
piddle містить. У першому випадку можна обійтися
пакет BAR;
@ISA=qw/PDL/;
sub foo {my($this) = @_; скрипка;}
пакет основний;
$a = PDL::pdl(BAR,5);
$a->foo();
Однак, оскільки об’єкт PDL є непрозорим посиланням на структуру C, це неможливо
розширити клас PDL, наприклад, додаткові дані через підкласи. Щоб обійти цю проблему
PerlDL має вбудовану підтримку для розширення класу PDL через має відношення для блаж
хеші. Ви можете отримати МАЄ поводитись як Є просто в тому, що ви призначаєте об'єкт "PDL".
до атрибута з іменем PDL і перевизначте метод ініціалізувати().
пакет FOO;
@FOO::ISA = qw(PDL);
підініціалізація {
мій $class = shift;
моє $я = {
create_time => time(), # необхідне розширення :-)
PDL => null, # використовується для зберігання об'єкта PDL
};
благословити $self, $class;
}
Викликатимуть усі конструктори PDL ініціалізувати() щоб переконатися, що ваші розширення додано користувачем
всі Конструктори PDL автоматично. Атрибут "PDL" використовується perlDL для зберігання
Об’єкт PDL і всі методи PDL автоматично використовують цей атрибут, якщо вони викликані з a
благословенний хеш-посилання замість об'єкта PDL (благословенний скаляр).
Пам’ятайте, що якщо ви підкласуєте клас, який є підкласом із piddle, вам це потрібно
викликати SUPER::ініціалізувати.
ПОТРІБНА ВІДПОВІДАЛЬНІСТЬ ПРО КОД РЕФ!!
прикладів
Ви можете знайти кілька простих прикладів підкласу PDL у тестовому прикладі розподілу PDL
файлів. Подивіться в "t/subclass2.t", "t/subclass3.t" тощо.
Вихід Автостворення та Підклас Об'єкти
Для функцій PDL, де створюється та повертається вихідний результат, PDL або викликає
метод "ініціалізувати" або "копіювати" підкласового об'єкта для створення вихідного об'єкта. (Побачити
PDL::Індексування для обговорення автоматичного створення вихідних даних.) Ця поведінка підсумована як
наступним чином:
·
для простий функції, визначені як такі, що мають підпис
func( a(), [o]b() )
PDL викличе $a->copy для створення вихідного об'єкта.
У дусі філософії створення Perl Easy Речі Easy, Ця поведінка вмикає
Об’єкти підкласів PDL, які можна записувати без перевантаження багатьох простих PDL
функції в цій категорії.
Файл t/subclass4.t у розповсюдженні PDL перевіряє цю поведінку. Подивіться цей файл
для прикладу.
·
Для інших функцій PDL викличе $class->initialize для створення вихідного об’єкта. Де
$class - це ім'я класу першого аргументу, що надається функції.
У цих більш складних випадках важко вгадати об’єкт підкласу
дизайнера, щоб знати, чи підходить «копія» чи «ініціалізація». Тому для цих випадків
$class->initialize викликається за замовчуванням. Якщо це вам не підходить, перевантажте
функціонувати у вашому підкласі та робити все, що підходить, це перевантажена функція
Код.
Використовуйте PDL::Objectsp онлайн за допомогою служб onworks.net