Arbeiten mit Dateien
Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 1 von 57.
Reale Programme sind auf mehrere Dateien aufgeteilt. Eine Ruby-Datei lädt eine andere mit require_relative, gefolgt vom Pfad der Datei relativ zur aktuellen Datei, normalerweise ohne die Endung .rb. Nach dieser Zeile können die Methoden und Klassen der geladenen Datei verwendet werden:
# greeting.rb
def greeting(name)
"Hello, #{name}!"
end
# main.rb
require_relative 'greeting'
puts greeting("Ada")Die Ausführung von ruby main.rb gibt Hello, Ada! aus: main.rb lädt greeting.rb und ruft anschließend dessen Methode auf.
Das Programm startet in der Datei, die du ausführst, hier main.rb, und Ruby führt sie von oben nach unten aus. require_relative führt an dieser Stelle die andere Datei aus, und zwar nur beim ersten Mal: Ein zweites require_relative 'greeting' gibt false zurück und tut nichts. Ein Name kann erst verwendet werden, nachdem die Datei, die ihn definiert, geladen wurde:
# main.rb
# puts greeting("Bo") # NoMethodError: greeting.rb ist noch nicht geladen
require_relative 'greeting' # führt greeting.rb aus, gibt true zurück
require_relative 'greeting' # bereits geladen, gibt false zurück
puts greeting("Bo")Das übliche Layout besteht aus einer Klasse pro Datei, wobei die Datei nach der Klasse in snake_case benannt ist: class Dog befindet sich in dog.rb, class BankAccount in bank_account.rb. In den Herausforderungen dieses Abschnitts enthält main.rb den bereitgestellten Eingabe-/Ausgabecode und beginnt mit einer require_relative-Zeile pro Datei, in Lade-Reihenfolge: Eine Klasse, auf der eine andere Klasse aufbaut, wird zuerst geladen.
dog.rb # class Dog ... end
bank_account.rb # class BankAccount ... end
functions.rb # Hilfsmethoden
main.rb # require_relative-Zeilen, dann der Ein-/Ausgabe-CodeWelche Dateien etwas gemeinsam nutzen, hängt von der Art des Namens ab. Methoden, die mit def am Anfang einer Datei definiert werden, sowie Klassen und Konstanten können von jeder Datei verwendet werden, die danach geladen wird. Eine lokale Variable gehört nur zu ihrer eigenen Datei:
# settings.rb
limit = 3 # lokale Variable: nur settings.rb sieht sie
MAX_ITEMS = 3 # Konstante: nach dem Laden sichtbar
def limit_text
"at most #{MAX_ITEMS}"
end
# main.rb
require_relative 'settings'
puts limit_text # höchstens 3
puts MAX_ITEMS # 3
# puts limit # NameError: undefinierte lokale VariableAufgabe
EinfachDas Programm besteht aus zwei Dateien. main.rb lädt greeting.rb, liest Namen ein und gibt das Ergebnis von greeting(name) aus. Vervollständige greeting in greeting.rb, sodass für den Namen Ada Hello, Ada! zurückgegeben wird oder Hello, friend!, wenn der Name leer ist.
Dein Code gehört in greeting.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
require_relative 'greeting'
# Gelieferter Ein-/Ausgabe-Code: belasse ihn unverändert
input = []
while (line = gets)
input << line.chomp
end
input.each { |name| puts greeting(name) }
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenInstanzvariablenMethoden und selfto_s und inspectRückblick – Bibliotheksausweis4Kapselung
Private MethodenGeschützte MethodenPrivate SetterZustand schützenRückblick – Verkaufsautomat7Polymorphismus und Duck Typing
PolymorphismusDuck TypingAbstrakte MethodenFälle und KlassenRückblick – Zahlungsmethoden2Getter und Setter sowie self
Leser und SchreiberBenutzerdefinierte Setterself in MethodenIdentität und GleichheitWiederholung – Kontaktliste5Vererbung
UnterklassenMethoden überschreibensuper aufrufenis_a? und VorfahrenRückblick – Gehaltsabrechnung des Personals8Spezielle Methoden
Gleichheit und HashOperator-MethodenIndexieren und AnhängenBenutzerdefinierte CollectionsRückblick – Brüche11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Online-Ruby-Compiler