String(arg)
appelle to_s
sur arg
et renvoie le résultat. nil.to_s
renvoie une nouvelle chaîne vide. String(nil)
renvoie donc une nouvelle chaîne vide.
Array(arg)
tente d'appeler to_ary
puis to_a
sur arg
, renvoyant le résultat de la première méthode qui existe (ou [arg]
si aucune méthode existe). NilClass
n'a pas de méthode to_ary
, mais nil.to_a
renvoie un nouveau tableau vide. Array(nil)
renvoie donc un nouveau tableau vide. Notez que String(arg)
et Array(arg)
ne sont pas des constructeurs. Ce ne sont que des méthodes globales définies dans Kernel
. Pour construire des objets dans Ruby, vous appelez généralement new
sur une classe, par ex. Array.new(2)
pour créer un tableau de longueur 2.
pourquoi ne l'avez-vous pas essayé?! Qu'est-ce qui ne va pas? 's = Chaîne (nulle); met s.class' – horseyguy