Gibt es einen Unterschied in der Art und Weise, wie IRB und Ruby einige Ausdrücke ausführen?
Diese Ausdrücke liefern im IRB und bei der Ausführung über die Befehlszeile unterschiedliche Ergebnisse. Die Frage ist, welcher Ausdruck richtig ist.
IRB:
>> s = 'hello'
=> "hello"
>> s.size
>> s[s.length] = '!'
IndexError: index 5 out of string
from (irb):31:in `[]='
from (irb):31
>>
Und in der normalen Schrift:
s = 'hello'
s[s.length] = '!'
puts s
laptop user$ ./prgruby.rb
hello!
0 Stimmen
Die erste funktionierte für mich von der irb-Eingabeaufforderung. ruby 1.9.2p0 auf Windows.
0 Stimmen
1.9.2p290/OSX, keine der beiden Ausnahmen auslöst.
3 Stimmen
Vielleicht laufen diese Skripte in verschiedenen Ruby's. Überprüfen Sie dies, indem Sie die Ruby-Version zur Laufzeit ausgeben.
1 Stimmen
Ok Jungs, so stellt sich heraus, dass der Fehler nur in Ruby 1.8* geworfen wird, wie ich sagte, ich bin Anfänger, aber dies ist eine interessante Entdeckung.
2 Stimmen
Verwenden Sie rvm? Haben Sie
#!/usr/bin/ruby
o#!/usr/bin/env ruby
? Wenn Sie die erstere unter rvm verwendet haben, führen Sie wahrscheinlich zwei verschiedene Versionen aus.0 Stimmen
Arbeiten in
ruby 1.9.3 p194
. Für das Protokoll,ruby 1.8
ist eine veraltete Implementierung der Sprache Ruby - sollten Sie so schnell wie möglich auf 1.9 migrieren und sich darüber im Klaren sein, dass die Veröffentlichung von 2.0 bereits geplant und vorgesehen ist.