Quand est-il considéré approprié d’utiliser Ruby SsortingngIO au lieu d’utiliser simplement Ssortingng?
Je pense que je comprends la différence fondamentale entre eux comme souligné par ” Qu’est-ce que la classe Ruby’s SsortingngIO? “, Que SsortingngIO permet de lire et d’écrire depuis / vers une chaîne de manière orientée stream. Mais qu’est-ce que cela signifie pratiquement?
Qu’est-ce qu’un bon exemple d’utilisation pratique de SsortingngIO pour utiliser simplement Ssortingng?
Fondamentalement, une chaîne ressemble à un object IO, d’où le nom SsortingngIO.
La classe SsortingngIO a write
méthodes de read
et d’ write
, elle peut donc être transmise à des parties de votre code conçues pour lire et écrire à partir de fichiers ou de sockets. C’est bien si vous avez une chaîne et que vous voulez qu’elle ressemble à un fichier pour tester votre code de fichier.
def foo_writer(file) file.write "foo" end def test_foo_writer s = SsortingngIO.new foo_writer(s) raise "fail" unless s.ssortingng == "foo" end
J’aime vraiment SsortingngIO pour le cas d’utilisation de l’ajout de texte ligne par ligne sans avoir à utiliser "\n"
encore et encore. Par exemple, au lieu de cela:
s = '' s << "\n" << "some text on a new line" s << "\nthis is pretty awkward" s = "#{s}\neven more ugly!"
je peux le faire
s = SsortingngIO.open do |s| s.puts 'adding newlines with puts is easy...' s.puts 'and simple' s.ssortingng end
Ce qui est beaucoup plus propre. Il n'est pas nécessaire d'utiliser la forme de bloc de Ssortingng.IO
, vous pouvez créer un object comme ceci: s = SsortingngIO.new
mais n'oubliez pas que la chaîne actuelle est accessible via la méthode SsortingngIO#ssortingng
.