Объекты LabVIEW

У меня есть массив объектов базового класса, в который я привел множество различных объектов дочерних классов и передаю его в подпрограмму vi. Есть ли способ узнать исходный тип объекта каждого отдельного элемента в массиве?

Спасибо ...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
1 731
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

NI имеет хороший обзор LVOOP, который необходимо прочитать, поскольку объектно ориентированный объект реализован уникальным образом для LabVIEW.

Вы пробовали использовать функции «в более общий класс» и «к более конкретному классу» на палитре управления приложением?

На самом деле мне нужен метод определения дочернего класса, к которому он принадлежит. Я не хочу его преобразовывать.

Manoj 29.09.2008 15:27
Ответ принят как подходящий

Для потомков это было перенесено на форумы ЛАВА. Пользователь Aristos Queue, один из разработчиков нативных объектно-ориентированных функций LabVIEW, ответил следующее:

Using a dynamic dispatch method in every class is the recommended way of handling this, although the recommendation is to create a method that does whatever it is you're trying to do. I'm guessing that you're thinking of a dynamic dispatch method that returns a name or ID of the object so you can say, "Is it equal to this? Ok, then it must be this class..." and then you do Action X if it is that class. If you write a dynamic dispatch method ActionX.vi and then override it appropriately, you'll save yourself on performance and have much easier time for code maintenance in the future.

You can also use the To More Specific node to test if a given object can be downcast to a given type -- this allows for inheritance testing as opposed to the name or ID comparison that only does type equivalence. If the To More Specific node returns an error then it is not of the destination type.

So your options are (in order of preference):

  • dynamic dispatch method that does the action
  • To More Specific node to do type testing
  • dynamic dispatch method that returns name/ID of the class of the object
  • Get Path of LabVIEW Object.vi (shipped in vi.lib in LabVIEW 8.5 but not added to the palettes until LabVIEW 8.6)

Другие вопросы по теме