Qual è la differenza in come Ruby inizializza una nuova stringa con doppi apici (""
) rispetto a String.new
? Ai fini della curiosità e sperimentazione, ho calpestato String#initialize
:In che modo Ruby valuta le virgolette doppie (aka "") rispetto a String.new?
class String
def initialize
puts "I <3 bananas" # they're delicious!
end
end
Quello che sto cercando di capire è: perché sono questi due esempi diversi?
# Calling the String class directly, I can declare banana love!
irb(main):054:0> String.new
I <3 bananas
=> ""
# Using double quotes, this string is not as tasty :(
irb(main):055:0> ""
=> ""
Questo è fastidioso per la ricerca, perché ogni risultato di Google sembra essere focalizzata sulla sintassi di base di Ruby, e io non sono riuscito a trovare nulla nella documentazione di Ruby.
Cosa succede se si sostituisce 'allocate' invece? –
@RyanBigg Questo è un buon pensiero, ma non fa differenza. I valori letterali stringa vengono valutati e hanno il loro oggetto creato in fase di compilazione, ignorando sia 'initialize' che' allocate'. –
@DarshanComputing, grazie! Sembra che dovrei hackerare e ricompilare Ruby dal sorgente per "" restituire il materiale di inizializzazione. Leggerò di più sui letterali. – amorphid