Quels sont les avantages d’utiliser SsortingngIO dans Ruby par opposition à Ssortingng?

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 .