Lavorare con i file
Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 1 di 57.
I programmi reali sono suddivisi in diversi file. Un file Ruby ne carica un altro con require_relative, seguito dal percorso del file relativo al file corrente, di solito senza l'estensione .rb. Dopo questa riga, è possibile usare i metodi e le classi del file caricato:
# greeting.rb
def greeting(name)
"Hello, #{name}!"
end
# main.rb
require_relative 'greeting'
puts greeting("Ada")Eseguendo ruby main.rb viene stampato Hello, Ada!: main.rb carica greeting.rb e poi chiama il suo metodo.
Il programma inizia nel file che esegui, qui main.rb, e Ruby lo esegue dall'alto verso il basso. require_relative esegue l'altro file in quel punto, e solo la prima volta: una seconda require_relative 'greeting' restituisce false e non fa nulla. Un nome può essere usato solo dopo che è stato caricato il file che lo definisce:
# main.rb
# puts greeting("Bo") # NoMethodError: greeting.rb non è ancora stato caricato
require_relative 'greeting' # esegue greeting.rb, restituisce true
require_relative 'greeting' # già caricato, restituisce false
puts greeting("Bo")Il layout abituale prevede una classe per file, con il file denominato in snake_case come la classe: class Dog si trova in dog.rb, class BankAccount in bank_account.rb. Nelle sfide di questa sezione, main.rb contiene il codice di input/output fornito e inizia con una riga require_relative per ogni file, nell’ordine di caricamento: una classe su cui si basa un’altra classe viene caricata per prima.
dog.rb # class Dog ... end
bank_account.rb # class BankAccount ... end
functions.rb # metodi di supporto
main.rb # righe con require_relative, poi il codice di input/outputCiò che un file condivide dipende dal tipo di nome. I metodi definiti con def all'inizio di un file, le classi e le costanti possono essere usati da ogni file caricato in seguito. Una variabile locale appartiene solo al proprio file:
# settings.rb
limit = 3 # variabile locale: solo settings.rb può vederla
MAX_ITEMS = 3 # costante: visibile dopo il caricamento
def limit_text
"at most #{MAX_ITEMS}"
end
# main.rb
require_relative 'settings'
puts limit_text # al massimo 3
puts MAX_ITEMS # 3
# puts limit # NameError: variabile locale non definitaSfida
FacileIl programma ha due file. main.rb carica greeting.rb, legge i nomi e stampa il risultato di greeting(name). Completa greeting in greeting.rb in modo che restituisca Hello, Ada! per il nome Ada, oppure Hello, friend! quando il nome è vuoto.
Il tuo codice va in greeting.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
require_relative 'greeting'
# Codice di input/output fornito: lascialo così com'è
input = []
while (line = gets)
input << line.chomp
end
input.each { |name| puts greeting(name) }
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiVariabili d'istanzaMetodi e selfto_s e inspectRipasso - Tessera della biblioteca4Incapsulamento
Metodi privatiMetodi protettiSetter privatiProteggere lo statoRiepilogo - Distributore automatico7Polimorfismo e Duck Typing
PolimorfismoDuck TypingMetodi astratticase e classiRiepilogo - Metodi di pagamento10Pattern di progettazione Parte 2
Delegazione con ForwardablePattern DecoratorPattern BuilderPattern State2Metodi di accesso e self
Metodi di lettura e scritturaSetter personalizzatiself nei metodiIdentità e uguaglianzaRiepilogo - Elenco contatti5Ereditarietà
SottoclassiRidefinizione dei metodiChiamare superis_a? e antenatiRiepilogo - Paghe del personale8Metodi speciali
Uguaglianza e hashMetodi degli operatoriIndicizzazione e appendCollezioni personalizzateRiepilogo - Frazioni11Progetto: Gestione della biblioteca
Libri e iscrittiPrendere in prestito i libriEsercitati da solo: Compilatore Ruby online