Forum: Italian Ruby user group Aiuto con codice

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-06 16:43
Ciao ragazzi sono nuovo e volevo chiedere un vostro parere riguardo a un
codice che ho scritto.Il codice è il seguente:

arr=IO.readlines("prova.txt")
puts"#{arr[1]}"
 case arr[0]
  when "ciao come va"
  puts "ciao"

  else
  puts "niente"
 end
Nel file prova.txt c'è scritto:
ciao come va
tutto bene

E' un esempio stupido ma non riesco a fare una cosa.Quello che vorrei
ottenere è che facesse un confronto con il primo elemento dell'array(nel
quale è stato inserito la prima riga del file txt) e che se il confronto
avesse esito positivo,venga digitato ciao.Tuttavia quello che mi viene
digitato è:
tutto bene
niente
è come se non trovasse nulla nell'array e quindi mi dice che non c'è
niente.

Spero di essere stato chiaro.

Ciao a tutti!!!!
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2009-01-07 09:42
In fondo ad ogni elemento di arr ci sono i caratteri di terminazione
linea, che variano a seconda del sistema operativo. Poiché
(correttamente) non li vuoi nelle when, devi modificare l'espressione
della case in

case arr[0].chomp

chomp è un metodo di String che per l'appunto rimuove gli eventuali
terminatori.


Paolo

Stefano De nigris wrote:
> Ciao ragazzi sono nuovo e volevo chiedere un vostro parere riguardo a un
> codice che ho scritto.Il codice è il seguente:
>
> arr=IO.readlines("prova.txt")
> puts"#{arr[1]}"
>  case arr[0]
>   when "ciao come va"
>   puts "ciao"
>
>   else
>   puts "niente"
>  end
> Nel file prova.txt c'è scritto:
> ciao come va
> tutto bene
>
> E' un esempio stupido ma non riesco a fare una cosa.Quello che vorrei
> ottenere è che facesse un confronto con il primo elemento dell'array(nel
> quale è stato inserito la prima riga del file txt) e che se il confronto
> avesse esito positivo,venga digitato ciao.Tuttavia quello che mi viene
> digitato è:
> tutto bene
> niente
> è come se non trovasse nulla nell'array e quindi mi dice che non c'è
> niente.
>
> Spero di essere stato chiaro.
>
> Ciao a tutti!!!!
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-07 16:23
Ok grazie paolo,questo codice mi ha fatto scemunire per un pomeriggio
intero.

Ciao ciao
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-08 19:39
Ragazzi ho un altro problema.Ho scritto il seguente codice:
 val=primariga.size
 sost=primariga[val].split(/\s/)
 puts "#{sost}"

e vorrei che "sost" abbia l'ultimo valore dell'array primariga.Tuttavia
mi esce un errore che non riesco a capire:

private method `split' called for nil:NilClass (NoMethodError)

che cosa sto sbagliando???
64aa4b69fdd7127e6f3ee16ae065a620?d=identicon&s=25 Giampiero Zanchi (giampiz)
on 2009-01-08 21:12
sono poco esperto ma mi pare di capire che stai tentando di accedere a
un elemento di array che non esiste;
se val = primariga.size vale 10, questo vuol dire che l'array ha 10
elementi, da primariga[0] a primariga[9]
chiedendo primariga[val] stai chiedendo primariga[10], che non esiste
prova con primariga[last] o primariga[-1]

Stefano De nigris wrote:
> Ragazzi ho un altro problema.Ho scritto il seguente codice:
>  val=primariga.size
>  sost=primariga[val].split(/\s/)
>  puts "#{sost}"
>
> e vorrei che "sost" abbia l'ultimo valore dell'array primariga.Tuttavia
> mi esce un errore che non riesco a capire:
>
> private method `split' called for nil:NilClass (NoMethodError)
>
> che cosa sto sbagliando???
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-09 11:46
Giampiero avevi ragione,non ci avevo pensato che volevo accedere ad un
elemento che non esisteva :D.
Grazie tante.Ciao
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-10 18:01
Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
risolverlo.Mi sapreste dire il codice che deve usare per poter far fare
la somma tra due numeri che inserisco io nella console.
Ve l'avevo detto che era banale... :D.
36f352bc8c234dbde21cb30e89767824?d=identicon&s=25 Luigi Panzeri (Guest)
on 2009-01-10 18:23
(Received via mailing list)
Il giorno 10/gen/09, alle ore 18:01, Stefano De nigris ha scritto:

> Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
> risolverlo.Mi sapreste dire il codice che deve usare per poter far
> fare
> la somma tra due numeri che inserisco io nella console.
> Ve l'avevo detto che era banale... :D.
>

puts gets.to_i + gets.to_i
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-10 18:28
(Received via mailing list)
Il 10 gennaio 2009 18.21, Luigi Panzeri <matley@muppetslab.org> ha
scritto:
>
> puts gets.to_i + gets.to_i

se poi hai voglia di effetti speciali puoi dare un'occhiata a readline.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-11 11:55
Pietro ma readline non legge i file txt??Che c'entra col fatto
d'inserirli io nella console??
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-11 12:16
(Received via mailing list)
Il 11 gennaio 2009 11.55, Stefano De nigris <stedenigris@hotmail.com>
ha scritto:
> Pietro ma readline non legge i file txt??Che c'entra col fatto
> d'inserirli io nella console??

require 'readline'

Readline.readline 'ilmioprompt > '
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-12 15:35
Pietro Giorgianni wrote:
> require 'readline'
>
> Readline.readline 'ilmioprompt > '

Pietro ho provato a fare come dici tu,ed esce:
valore_inserito
ilmioprompt > valore_inserito

Cmq ti ringrazio lo stesso...ciao :D :D
64aa4b69fdd7127e6f3ee16ae065a620?d=identicon&s=25 Giampiero Zanchi (giampiz)
on 2009-01-13 09:10
Stefano De nigris wrote:
> Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
> risolverlo.Mi sapreste dire il codice che deve usare per poter far fare
> la somma tra due numeri che inserisco io nella console.
> Ve l'avevo detto che era banale... :D.

fra ignoranti ci si capisce meglio :-) ricordati sempre che i dati in
input da console sono sempre acquisiti con un newline in fondo, quindi
il seguente codice non funziona

sull'input da console, in tal caso, bosogna fare la chomp, come segue:

puts "Dammi un numero intero"
n = gets.chomp.to_i

vedi:
http://www.ruby-doc.org/docs/Tutorial/part_02/user...
o
http://www.ruby-doc.org/core/classes/String.html#M000834
ciao
Giampiero
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-14 16:36
ragazzi mi sto arrabbiando con nua stringa di codice che non riesco a
capire il xke non vuole funzionare correttamente.La stringa è la
seguente:

elementi=primariga.to_s
if elementi.include? "=" && ":"
  duepunti=elementi.gsub(/[:]/,'').chop
  puts "#{duepunti}"
end

dove primariga va a leggere le frasi su un file txt,tramite
readlines.Quello che voglio che verifichi se all'interno della stringa
ci siano gli elementi = e : e se è vero mi deve stampare lo stesso
elemento,pero senza i due punti.
Ma quello che accade è diverso...o meglio mi stampa a video quello che
io ho detto,in piu stampa anche quelle righe dove ci sono solo i due
punti.
E' come se capisce che deve vedere entrambi.Come posso risolverlo????
36f352bc8c234dbde21cb30e89767824?d=identicon&s=25 Luigi Panzeri (Guest)
on 2009-01-14 16:55
(Received via mailing list)
Il giorno 14/gen/09, alle ore 16:36, Stefano De nigris ha scritto:

> ragazzi mi sto arrabbiando con nua stringa di codice che non riesco a
> capire il xke non vuole funzionare correttamente.La stringa è la
> seguente:
>
> elementi=primariga.to_s
> if elementi.include? "=" && ":"
>   duepunti=elementi.gsub(/[:]/,'').chop
>   puts "#{duepunti}"
> end
>

if condizione   # se condizione e' verificata
    fai una cosa
else # altrimenti
   fai una altra cosa
end

http://pine.fm/LearnToProgram/?Chapter=06
24035e6fafa4c747fa9c8f2e9b39c6fd?d=identicon&s=25 Andrea Campi (Guest)
on 2009-01-14 17:05
(Received via mailing list)
On 1/14/09 4:53 PM, Luigi Panzeri wrote:
>>    puts "#{duepunti}"
>> end
>>
>>
>
> if condizione   # se condizione e' verificata
>      fai una cosa
> else # altrimenti
>     fai una altra cosa
> end
>
piu' che altro

"if f(a) && f(b)" != "if f(a && b)"

Andrea
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-14 17:14
Luigi ho provato come dici tu,ma fa lo stesso...fra poco faro volare un
pc per la prima volta al mondo(anche se mi viene i dubbio che qualcuno
lo abbia gia fatto).
Il fatto è che l'and,cioè && non gli dice che devono esserci entrambi i
caratteri,capito?Forse sbaglio nel scrivere il codice???
64aa4b69fdd7127e6f3ee16ae065a620?d=identicon&s=25 Giampiero Zanchi (giampiz)
on 2009-01-14 17:24
>
> elementi=primariga.to_s
> if elementi.include? "=" && ":"
>   duepunti=elementi.gsub(/[:]/,'').chop
>   puts "#{duepunti}"
> end
>
se i due elementi devono essere in sequenza, ovvero prima = e poi :
eventualmente non consecutivi, una prima possibile soluzione, anche se
assai poco elegante, è:
elementi = "AAABBB  =  UUUU : iiiFF"
riga = elementi
if !(riga.match '=').nil?
   riga = $'
   if !(riga.match ':').nil?
      duepunti=elementi.gsub(/[:]/,'').chop
      puts "#{duepunti}"
   end
end
$' è il testo che segue il testo trovato dalla match
7daea92c28be2e85196a4f6dfdb2f689?d=identicon&s=25 Claudio Petasecca Donati (etapeta)
on 2009-01-14 17:27
Ciao Stefano

L'and di due oggetti riporta il secondo oggetto se il primo e' non
nullo, altrimenti nil.

Per questo la sotto-espressione
 "=" && ":"
(che viene calcolata prima di invocare il metodo "include?") vale sempre
":"
64aa4b69fdd7127e6f3ee16ae065a620?d=identicon&s=25 Giampiero Zanchi (giampiz)
on 2009-01-14 17:31
un leggero miglioramento...

elementi = "AAABBB  =: iiiFF"
riga = elementi
r = /=.*:/
if !(riga.match r).nil?
  duepunti=elementi.gsub(/[:]/,'').chop
  puts "#{duepunti}"
end
24035e6fafa4c747fa9c8f2e9b39c6fd?d=identicon&s=25 Andrea Campi (Guest)
on 2009-01-14 17:32
(Received via mailing list)
On 1/14/09 5:14 PM, Stefano De nigris wrote:
> Luigi ho provato come dici tu,ma fa lo stesso...fra poco faro volare un
> pc per la prima volta al mondo(anche se mi viene i dubbio che qualcuno
> lo abbia gia fatto).
> Il fatto è che l'and,cioè&&  non gli dice che devono esserci entrambi i
> caratteri,capito?Forse sbaglio nel scrivere il codice???
>
Forse?? Non voglio essere cattivo, ma tra la possibilità che stia
sbagliando Ruby e quella che stai sbagliando tu, mi sembra che si possa
scommettere 1 a infinito :p

Andrea
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-14 17:50
Eh lo so...ma cerco di dare la colpa a lui :P.Mi sapresti dire dov'è
l'errore??Io voglio che lui esegua l'if solo se : e = stanno vicini,e
non che come fa lui.
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-14 18:08
(Received via mailing list)
2009/1/14 Stefano De nigris <stedenigris@hotmail.com>:
> Eh lo so...ma cerco di dare la colpa a lui :P.Mi sapresti dire dov'è
> l'errore??Io voglio che lui esegua l'if solo se : e = stanno vicini,e
> non che come fa lui.

elementi = primariga.to_s
if /=:/ =~ elementi
  duepunti = elementi.gsub(':', '').chop
  puts duepunti
end

però:1) non ho capito perché fai chop
2) occhio che così sostituisce ":" con "", mentre magari quello che
vuoi è sostituire "=:" con "=" (le cose coincidono solo se non ci sono
: vicino a =).

se quello che vuoi è la seconda, usa

elementi.gsub("=:", "=")

nota anche che scrivere

puts "#{duepunti}"

fa la stessa cosa che

puts duepunti

con la sola differenza che la prima spreca un po' di risorse
inutilmente.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-16 19:53
Pietro ti ringrazio,funziona come si deve..

per quanto rigurda le tue domande:
1)mi serve perche voglio eliminare l'ultimo carattere
2)è la stessa cosa,io elimo soltanto i ":"


Cmq ti volevo fare un ultima domanda.Ma che differenza c'è tra usare i
"" e '',cioè prima io ho usato "=" and ":" ma potevo usare anche '=' and
':'.Quale è la differenza???
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-17 09:06
(Received via mailing list)
2009/1/16 Stefano De nigris <stedenigris@hotmail.com>:
> Cmq ti volevo fare un ultima domanda.Ma che differenza c'è tra usare i
> "" e '',cioè prima io ho usato "=" and ":" ma potevo usare anche '=' and
> ':'.Quale è la differenza???

prova queste due righe:

puts '#{3 + 3}'

puts "#{3 + 3}"
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-23 10:26
Pietro scusa se ti risp ora,ma in questi giorni sono stati impegnato con
l'univerisità.Cmq ho provato a fare come dici tu e la differenza sta nel
fatto che le due (') virgolette fanno stampare tutto quello che ho
scritto io,invece le due apici (") stampano quello che viene eseguito
dalle istruzioni da me scritte.Giusto o ho capito male??? :D
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-23 10:29
(Received via mailing list)
2009/1/23 Stefano De nigris <stedenigris@hotmail.com>:
> Pietro scusa se ti risp ora,ma in questi giorni sono stati impegnato con
> l'univerisità.Cmq ho provato a fare come dici tu e la differenza sta nel
> fatto che le due (') virgolette fanno stampare tutto quello che ho
> scritto io,invece le due apici (") stampano quello che viene eseguito
> dalle istruzioni da me scritte.Giusto o ho capito male??? :D

esatto: altro esempio è '\n'.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-23 11:09
Ok,grazie.Senti ho un'altra curiosità,è possibile creare un file con il
nome che gli digito io nella console???Cioè:
file=File.new("nom.txt","r") in questo modo creo un file che ha come
nome nom,ma io invece vorrei che al posto di nom ci fosse la stringa che
digito io.E' possibile farlo?Se si come si fa?

Ciao a tutti!!!!
Bd6fb06295c8ff8003af041210c91daa?d=identicon&s=25 Daneel Olivaw (daneel_olivaw)
on 2009-01-23 11:25
Stefano De nigris wrote:
> Ok,grazie.Senti ho un'altra curiosità,è possibile creare un file con il
> nome che gli digito io nella console???Cioè:
> file=File.new("nom.txt","r") in questo modo creo un file che ha come
> nome nom,ma io invece vorrei che al posto di nom ci fosse la stringa che
> digito io.E' possibile farlo?Se si come si fa?
>
> Ciao a tutti!!!!

In teoria sì; non l'ho mai fatto, ma dovrebbe essere una cosa del
genere, come logica:

codice
codice
...
comando "Ehi, utente, scrivi qua il nome del file!"
variabile = input_utente
file=File.new("#{input_utente}","r")
codice
...

Con input_utente eventualmente bonificato da fine riga... o aggiunti,
scusate, ma non ho mai visto molto queste cose '^_^

Questo accrocchio dovrebbe funzionare se il programma si ferma e resta
in attesa dell'input dell'utente, se passa avanti fregandosene (che
presumo sia ciò che NON fa), bisogna sistemare un po'.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-23 11:32
Ho provato ma niente non funziona, mi dice che non trova un file
simile.Credo che dovrei cmq averlo creato il file txt e poi posso
operarci,non lo crea lui. :(
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-23 11:49
(Received via mailing list)
Il 23 gennaio 2009 11.32, Stefano De nigris <stedenigris@hotmail.com>
ha scritto:
> Ho provato ma niente non funziona, mi dice che non trova un file
> simile.Credo che dovrei cmq averlo creato il file txt e poi posso
> operarci,non lo crea lui. :(

non è che stai provando con File.new('nomedelmiofilepreferito', 'r')

???

se è così, non può funzionare, devi usare 'w' o 'rw'.
Bd6fb06295c8ff8003af041210c91daa?d=identicon&s=25 Daneel Olivaw (daneel_olivaw)
on 2009-01-23 11:52
Stefano De nigris wrote:
> Ho provato ma niente non funziona, mi dice che non trova un file
> simile.Credo che dovrei cmq averlo creato il file txt e poi posso
> operarci,non lo crea lui. :(

Prova a fare così:

file=File.new("#{input_utente}","w+")

"r" è solo in lettura, scusa non mi ero accorto. Oppure opera con
qualche altra opzione, nel caso non voglia aprirlo.

Hai visto questa paginetta:
http://www.mrwebmaster.it/ruby/guide/gestione-file...
?
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-23 12:07
Ho fatto così:

nome=gets.to_s
file=File.new("#{nome}.txt","w+")

e mi da questo errore:
prova                                  (questo è quello che io ho
digitato)
prova.rb:2:in `initialize': Invalid argument - prova (Errno::EINVAL)
.txt  from prova.rb:2:in `new'
  from prova.rb:2


Cosa vuole??Xke non funziona??
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-23 12:14
(Received via mailing list)
2009/1/23 Stefano De nigris <stedenigris@hotmail.com>:
>
>
> Cosa vuole??Xke non funziona??

occhio che gets aggiunge un ritorno a capo al nome del file.

nome=gets.to_s.strip
file=File.new("#{nome}.txt","w+")
C01072ccffb1f2d23f8b5f686e5b106a?d=identicon&s=25 gabriele renzi (Guest)
on 2009-01-23 15:36
(Received via mailing list)
> From: Pietro Giorgianni <giorgian@gmail.com>


> > Cosa vuole??Xke non funziona??

stefano: se eviti le abbreviazioni stile cellullare ti voglio più bene, sii
gentile :*

nn è ke nn si cpcse ma è brutto da lggre ;)

> occhio che gets aggiunge un ritorno a capo al nome del file.
>
> nome=gets.to_s.strip
> file=File.new("#{nome}.txt","w+")

alcune note:
* perché to_s ? gets restituisce già una stringa
* per eliminare gli eventuali "a capo" c'è un metodo apposito,
String#chomp
* se possibile dovreste sempre usare i metodi per gestire file che usano
blocchi.
  In questo modo il file viene chiuso automaticamente quando il blocco
termina e voi non dovete gestirlo a mano.

Cmq, così funziona. Dovrebbe in realtà funzionare anche come era prima
però.
mecbuc:~/tmp rff$ ls
f.rb

mecbuc:~/tmp rff$ cat f.rb
name = gets.chomp
open(name, 'w+') do |file|
 file.puts("hello!")
end

mecbuc:~/tmp rff$ ruby f.rb
output.txt

mecbuc:~/tmp rff$ ls
f.rb            output.txt

mecbuc:~/tmp rff$ cat output.txt
hello!
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-23 15:42
Ok lo farò.Cmq ho provato il codice che mi ha suggerito pietro e
funziona,grazie lo stesso.Un'unica cosa,potresti spiegarmi meglio cosa
fanno queste istruzioni che hai scritto,sarei curioso:

mecbuc:~/tmp rff$ ls
> f.rb
>
> mecbuc:~/tmp rff$ cat f.rb
> name = gets.chomp
> open(name, 'w+') do |file|
>  file.puts("hello!")
> end
>
> mecbuc:~/tmp rff$ ruby f.rb
> output.txt
>
> mecbuc:~/tmp rff$ ls
> f.rb            output.txt
>
> mecbuc:~/tmp rff$ cat output.txt
> hello!
C01072ccffb1f2d23f8b5f686e5b106a?d=identicon&s=25 gabriele renzi (Guest)
on 2009-01-24 09:47
(Received via mailing list)
> From: Stefano De nigris <stedenigris@hotmail.com>
> To: ml@lists.ruby-it.org
> Sent: Friday, 23 January, 2009 15:42:24
> Subject: Re: [ruby-it] Aiuto con codice
>
> Ok lo farò.Cmq ho provato il codice che mi ha suggerito pietro e
> funziona,grazie lo stesso.Un'unica cosa,potresti spiegarmi meglio cosa
> fanno queste istruzioni che hai scritto,sarei curioso:

certo, era il copia-incolla da una sessione in console su linux.

ls è un comando che stampa la lista dei file in una cartella (come dir in
windows/dos)
mentre cat legge i file passati come argomento e li stampa schermo
(starebbe per 'concat', nel senso che concatena i vari file)

Il codice ruby in se è semplice

 name = gets.chomp
 open(name, 'w+') do |file|
   file.puts("hello!")
 end

il pezzo tra do..end è il blocco che viene passato al metodo, in pratica
open è

* come se fosse una funzione/metodo senza nome
* il pezzo tra | | è come la signature: stabilisce quali siano gli
argomenti
* quando la funzione (il blocco) viene eseguita il valore della
variabile "file" sarà quello passato come argomento al blocco.


Se cè altro che nn è chiaro chiedi pure.
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-24 16:05
Ah ok ti ringrazio per la spiegazione,è stata tutta chiara.

Ciao ciao!!!!!
6f15eff3cbdf016983d831363117b9b7?d=identicon&s=25 Stefano De nigris (stewie)
on 2009-01-26 17:14
Ragazzi ho un problema e non riesco a capire come risolverlo.Oggi ho
scritto questo segmento di codice:

d=primariga[1]
uguale=d.index "="
puts "#{d[uguale..d.size]}"

vorrei che venga visualizzato sulla console un pezzo di una
frase.Essendo che la frase iniziale prima dell'uguale(=) può essere più
corta o più lunga,ho pensato di rendere più dinamico il codice andando a
trovare l'indice del valore uguale,e da quall'indice in poi farmi
visualizzare la parte che m'interessa.Tuttavia quando ho mandato in run
mi è uscito un errore mai visto fino ad ora:

bad value for range (ArgumentError)
from verifica.rb:8:in `each'
from verifica.rb:8

Ho anche sostituito al posto dell'uguale il numero dell'indice e
funziona,quindi credo che l'errore sta nell'uguale.Come posso
risolverlo???
C01072ccffb1f2d23f8b5f686e5b106a?d=identicon&s=25 gabriele renzi (Guest)
on 2009-01-27 09:36
(Received via mailing list)
> visualizzare la parte che m'interessa.Tuttavia quando ho mandato in run
> mi è uscito un errore mai visto fino ad ora:
>
> bad value for range (ArgumentError)
> from verifica.rb:8:in `each'
> from verifica.rb:8
>
> Ho anche sostituito al posto dell'uguale il numero dell'indice e
> funziona,quindi credo che l'errore sta nell'uguale.Come posso
> risolverlo???


il "." ha meno priorità del '..' quindi ruby sta cercando di costruire un
intervallo che che va da un numero a una stringa e quindi fallisce.

Metti una parentesi 1..(d.size) e dovrebbe funzionare. Spero :)

PS
se hai altre domande che non c'entrano con il topic originale di questo
thread creane uno nuovo con un titolo appropriato, così se qualcuno ha lo
stesso problema può cercarlo e trovare la sua soluzione facilmente.
This topic is locked and can not be replied to.