ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Undefined method for nil
BeitragVerfasst: 21 Jun 2011, 22:53 
Offline
Novize

Registriert: 21 Okt 2009, 17:29
Beiträge: 17
Hallo!
Gegeben ist ein beliebiger String, über welchen Buchstabenweise iteriert und jeder Buchstabe in einem Array der Form str[Zeichenposition_im_String] gespeichert wird. Dieser Array soll aber nun wieder zu einem einem zusammenhängenden String werden:




1
2
3
4
5
6
7
8
9
10
11
12
13
14


str = "LOREMIPSUMDOLORSITAMET"
i = 0
ary = []
while i <= str.length
ary << str[i].to_i.chr
i = i+1
end

for i in 0..str.length
result = String.new(result+ary[i])
end
puts result


resultiert in



1
2
3
.rb:31: undefined method `+' for nil:NilClass (NoMethodError)
from .rb:30:in `each'
from .rb:30


Was mache ich hier falsch?

Danke,
Presto :D


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 21 Jun 2011, 23:02 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP


1
2
3
4

for i in 0..str.length
result = String.new(result+ary[i])
end


Beim ersten durchlauf ist result noch nicht gesetzt, also nil.

Gruß,
Skade


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 21 Jun 2011, 23:07 
Offline
Novize

Registriert: 21 Okt 2009, 17:29
Beiträge: 17
Das liefert bei mir selbigen Fehler :?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 21 Jun 2011, 23:20 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
Ich habe auch nur den Codeausschnitt zur Hervorhebung kopiert, um dir den Fehler zu erklären. Du verwendest rechts `result`, das ist die erste Verwendung der Variable, damit ist diese nil. Du kannst nicht einfach an einen Nullpointer einen String anhängen. Das geht vielleicht in PHP, aber nicht in Ruby.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 22 Jun 2011, 19:06 
Offline
Interpreter
Benutzeravatar

Registriert: 02 Jan 2005, 20:15
Beiträge: 1360


1
2
3
4
5
6
7
str = "LOREMIPSUMDOLORSITAMET"
i = 0
ary = []

str.each_char { |char| ary << char }

ary # => ["L", "O", "R", "E", "M", "I", "P", "S", "U", "M", "D", "O", "L", "O", "R", "S", "I", "T", "A", "M", "E", "T"]


Hmm das ist der erste Teil.

Aber den 2. Teil verstehe ich nicht.

Zitat:
Dieser Array soll aber nun wieder zu einem einem zusammenhängenden String werden:


Was musst du mit dem Array nochmals machen? Ein .join auf den Array?

_________________
Retired. Macht es gut!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 22 Jun 2011, 20:35 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
shevegen hat geschrieben:


1
2
3
4
5
6
7
str = "LOREMIPSUMDOLORSITAMET"
i = 0
ary = []

str.each_char { |char| ary << char }

ary # => ["L", "O", "R", "E", "M", "I", "P", "S", "U", "M", "D", "O", "L", "O", "R", "S", "I", "T", "A", "M", "E", "T"]


Hmm das ist der erste Teil.


Das geht einfacher:

1
2
str = "LOREMIPSUMDOLORSITAMET"
str.split("") #=> ["L", "O", "R", "E", "M", "I", "P", "S", "U", "M", "D", "O", "L", "O", "R", "S", "I", "T", "A", "M", "E", "T"]


Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Undefined method for nil
BeitragVerfasst: 22 Jun 2011, 20:50 
Offline
Interpreter
Benutzeravatar

Registriert: 21 Mai 2007, 11:30
Beiträge: 1283
Wohnort: Thüringen
Ich find ja immer



str.scan(/./)

intuitiver. split("") funktioniert auch, aber das ist doch eigentlich eher ein Nebeneffekt der Regexp-Implementation (auch wenn dieses Verhalten dokumentiert ist).


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: