Sono un po 'confuso riguardo alle parole riservate in Ruby.Le parole riservate "inizio" e "fine" sono o no?
"The Ruby Programming Language", scritto da Matz, afferma che begin
e end
sono parole riservate della lingua. Sono certamente usati sintatticamente per delimitare i blocchi.
Tuttavia, oggetti intervallo nella lingua hanno metodi di nome begin
e end
, come in
(1..10).end
=> 10
Ora, testare questo fuori, trovo che, anzi, posso definire metodi chiamati "begin" e "end "sugli oggetti, anche se provo a nominare una variabile" begin "fallisce. (Ecco un esempio di utilizzarlo come un nome di metodo, funziona davvero ... :)
class Foo
def begin
puts "hi"
end
end
Foo.new.begin
Quindi, suppongo che sto chiedendo, ciò che in realtà è lo stato delle parole riservate come questo? Avrei immaginato che non potessero essere usati per i nomi dei metodi (eppure sembra funzionare) o che per lo meno sarebbe uno stile terribile (ma è effettivamente usato nel linguaggio di base per la classe Range).
Sono abbastanza confuso su quando possono essere utilizzati e per cosa. C'è anche la documentazione su questo?
È vero per tutte le "parole riservate"? Se è in cattivo stile, perché l'API di base lo fa? (Anche se intuitivamente sembra uno stile orribile - anzi, una cosa terribile per la lingua permettere a tutti.) E, * è documentato *? – Perry
È permesso perché a volte avere dei metodi chiamati come una parola riservata può avere senso (IMHO 'Range # end') è un buon esempio. Le cose non sono sempre in bianco e nero, come la maggior parte delle funzionalità che potrebbero essere utili se usate con cura. Per quanto riguarda la documentazione, una rapida ricerca su Google ha trovato http://www.tutorialspoint.com/ruby/ruby_syntax.htm, che afferma che "[queste] parole riservate non possono essere usate come nomi di costanti o variabili. , essere usato come nomi di metodi ", che IMHO ha perfettamente senso. –
Tuttavia non sembra essere una documentazione ufficiale. (Non ho trovato alcuna menzione nei documenti ufficiali, sebbene ciò non implichi che non esiste.) – Perry