Salve a tutti. Da poco ho deciso di voler entrare nel mondo della
programmazione e pertanto sono stato indirizzato su Ruby come linguaggio
un po’ più semplice, rispetto a Java o C, e professionale allo stesso
tempo.
Sono alle prime armi e ho dei problemi con il gets.chomp. Non nel
capirlo, il concetto è chiaro, ma ricevo continui errori solo e
solamente su questo argomento.
Ho scritto questo codice:
puts ‘Ehilà, come ti chiami?’
nome = gets.chomp
Adriano
puts 'Ti chiami ’ + nome + ‘? Ma che bello :)’
puts 'Piacere di conoscerti ’ + nome + ‘.’
Tuttavia, quando vado ad aprirlo nella linea di comando ricevo tale
errore:
E’ chiaro che il problema sia “Adriano” ma non capisco il perchè. Se
provo un copia incolla da notepad++ su ruby il codice funziona.
Grazie mille in anticipo.
Invece va inserito da tastiera quando il programma si fermerà alla gets.
Perdonami, ma continuo a non capire.
Come dovrei risolvere quindi?
Sul codice come posso far in modo che ‘Adriano’ venga scritto quando non
posso scriverlo in esso? Questa parte sul gets mi sta facendo
scervellare.
Scusa ancora per il disturbo e grazie in anticipo.
Così funziona di sicuro. E’ fondamentale capire come funziona la gets
perché con vari nomi è presente in tutti i linguaggi di programmazione:
il programma si ferma in attesa di una stringa inserita da terminale. Il
return termina la stringa.
Quando inserisci quelle righe una a una in irb vedi questo:
$ irb
2.2.2 :001 > puts ‘Ehilà, come ti chiami?’
Ehilà, come ti chiami?
=> nil
2.2.2 :002 > nome = gets.chomp
e qui non appare il prompt 2.2.2 :003 > proprio perché il programma è in
attesa di input. Quando scrivi Adriano e premi return vedrai
=> “Adriano”
2.2.2 :003 >
e adesso in nome c’è Adriano. Di solito non si usa la gets in
interattivo perché si fa prima a scrivere nome = “Adriano”
Quando facevi copia e incolla dentro a irb copiavi sia il programma che
il suo input, da qui il malinteso che Adriano fosse un comando del
programma.
Ahimè, no. Credo sia unico nel mio genere a non capire qualcosa di base
sul programming purtroppo.
Tornando a noi… come ho risposto sopra se copio ed incollo il codice
sul notepad tale e quale il risultato è che poi al “nome = gets.chomp”
mi viene dato “” ossia nulla.
In irb ho capito come funziona, ossia dopo il nome= gets.chomp premo
return e inserisco ad esempio “ciao” cosicche nome = ciao.
Per far si che ciò accada da un codice invece? Mi scuso sin da ora per
essere cosi insistente/cocciuto ma non riesco proprio a capirlo.
salva il file chomp.rb > passi al terminale >poi dai il comando$ ruby
percorso/file
Ho riscontrato 2 errori nel fare quanto mi hai detto.
Dopo aver salvato il file come chomp.rb, apro ruby e dopo aver scritto
$ruby chomp.rb ricevo tale errore:
SyntaxError: (irb):6: syntax error, unexpected tIDENTIFIER, expecting
end-of-input
L’altro errore è sempre per il gets.
Ho copiato ed incollato il tuo codice sul mio notepad e dopo averlo
salvato come chomp.rb l’ho aperto con il prompt dei comandi ed il
risultato è questo:
Ehilà come ti chiami?
Ti chiami ? Ma che bello
Piacere di conoscerti .
Quello che non capisco è come, appunto, questo codice possa funzionare
se al gets.chomp non posso dare un nome. Il mio problema è capire come,
per esempio, inserire la parola Adriano al posto di tutto il nome=
gets.chomp.
Probabilmente è ciò che hai cercato di spiegarmi, ma tutto ciò mi
risulta ancora poco chiaro.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.