Julia as a Second Language by Erik Engheim
Author:Erik Engheim [Engheim, Erik]
Language: eng
Format: epub
Publisher: Manning Publications Co.
Published: 2023-03-21T23:00:00+00:00
10.2 Using nothing in data structures
The multistage rocket is similar to a more generic data structure called a linked-list. Just like with the rocket example, it can often be useful to chain together multiple objects. You could, for example, use this to represent a train made up of multiple wagons holding some cargo. The following definition will not work. Can you determine why?
Listing 10.2 Defining an infinite train
struct Wagon cargo::Int â¶ next::Wagon â· end cargo(w::Wagon) = w.cargo + cargo(w.next) â¸
â¶ Tons of cargo in the train wagon
â· The next wagon linked to this one
⸠Calculate the total cargo in all wagons.
There is no way of building a train made out of these wagons with the definition we have given. Iâll clarify with an example:
train = Wagon(3, Wagon(4, Wagon(1, Wagon(2, ....))))
There is no way to end this chain of wagons. Every Wagon constructor requires a wagon object as its second argument. To illustrate an infinite chain of wagons I inserted .... in the code example. The next field always has to be a Wagon. But what if you made Wagon an abstract type instead? That is one possible solution, which was already employed in the multistage rocket example.
Remember, not every Rocket subtype had a next stage field. However, in this chapter I will introduce a more generic solution to this problem, utilizing parametric types. This will just cover the basics, since chapter 18 is completely devoted to parametric types.
Important Parametric types may look like an add-on feature only of interest to advanced Julia programmers. However, I have deliberately minimized usage of parametric types in the code examples. Real-world Julia code uses parametric types extensively. Parametric types are crucial for type correctness, performance, and reducing code duplication.
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Coding Theory | Localization |
Logic | Object-Oriented Design |
Performance Optimization | Quality Control |
Reengineering | Robohelp |
Software Development | Software Reuse |
Structured Design | Testing |
Tools | UML |
Deep Learning with Python by François Chollet(12520)
Hello! Python by Anthony Briggs(9867)
OCA Java SE 8 Programmer I Certification Guide by Mala Gupta(9757)
The Mikado Method by Ola Ellnestam Daniel Brolund(9747)
Dependency Injection in .NET by Mark Seemann(9293)
Algorithms of the Intelligent Web by Haralambos Marmanis;Dmitry Babenko(8258)
Test-Driven iOS Development with Swift 4 by Dominik Hauser(7741)
Grails in Action by Glen Smith Peter Ledbrook(7667)
The Well-Grounded Java Developer by Benjamin J. Evans Martijn Verburg(7517)
Becoming a Dynamics 365 Finance and Supply Chain Solution Architect by Brent Dawson(6743)
Microservices with Go by Alexander Shuiskov(6510)
Practical Design Patterns for Java Developers by Miroslav Wengner(6408)
Test Automation Engineering Handbook by Manikandan Sambamurthy(6386)
Secrets of the JavaScript Ninja by John Resig Bear Bibeault(6378)
Angular Projects - Third Edition by Aristeidis Bampakos(5765)
The Art of Crafting User Stories by The Art of Crafting User Stories(5296)
NetSuite for Consultants - Second Edition by Peter Ries(5241)
Demystifying Cryptography with OpenSSL 3.0 by Alexei Khlebnikov(5058)
Kotlin in Action by Dmitry Jemerov(5019)
