Виправлено #9: делегувати порівняння типів у Type::is_equal_to(Type* type), зробити порівняння рекурсивним.
Для тестування взято використано наступні приклади:
список структур:
структура Покемон
імʼя
кінець
відомі_покемони = [
Покемон("Пікачу"),
Покемон("Мяут"),
Покемон("Меджікарп"),
Покемон("Іві")
]
друк(відомі_покемони[0].імʼя)
список списків структур із шаблоном:
структура Яйце<Т>
вміст Т
кінець
структура Покемон
імʼя
кінець
тара_яєчок = [
[
Яйце(вміст=Покемон("Пікачу")),
Яйце(вміст=Покемон("Мяут")),
Яйце(вміст=Покемон("Меджікарп")),
Яйце(вміст=Покемон("Іві"))
]
]
друк(тара_яєчок[0][0].вміст.імʼя)
список списків структур із подвійним шаблоном:
структура Яйце<Т, У>
вміст Т
значення У
кінець
структура Покемон
імʼя
кінець
тара_яєчок = [
[
Яйце(вміст=Покемон("Пікачу"), значення=123),
Яйце(вміст=Покемон("Мяут"), значення=123),
Яйце(вміст=Покемон("Меджікарп"), значення=123),
Яйце(вміст=Покемон("Іві"), значення=123)
]
]
друк(тара_яєчок[0][0].вміст.імʼя)
До впровадження зміни виникали наступні помилки:
список структур:
Неможливо отримати властивість "імʼя" з типу "Покемон або Покемон або Покемон або Покемон".
список списків структур із шаблоном:
Неможливо отримати властивість "вміст" з типу "Яйце<обʼєкт> або Яйце<обʼєкт> або Яйце<обʼєкт> або Яйце<обʼєкт>".
список списків структур із подвійним шаблоном:
Неможливо отримати властивість "вміст" з типу "Яйце<обʼєкт, обʼєкт> або Яйце<обʼєкт, обʼєкт> або Яйце<обʼєкт, обʼєкт> або Яйце<обʼєкт, обʼєкт>".
Після впровадження зміни, кожен із прикладів виводить:
В цілому виглядає добре. Я не тестував якісь закручені варіанти, тому можливо щось десь і не працює. Але наразі ок. Лише треба переглянути необхідність перевірки назви, комент про яку я залишив вище.
Виправлено #9: делегувати порівняння типів у
Type::is_equal_to(Type* type)
, зробити порівняння рекурсивним.Для тестування взято використано наступні приклади:
список структур:
список списків структур із шаблоном:
список списків структур із подвійним шаблоном:
До впровадження зміни виникали наступні помилки:
список структур:
список списків структур із шаблоном:
список списків структур із подвійним шаблоном:
Після впровадження зміни, кожен із прикладів виводить: