Este é curto, mas achei legal. "bar".upto("baz").to_a # => ["bar", "bas", "bat", "bau", "bav", "baw", "bax", "bay", "baz"]
O upto
método em ‘String’ retorna um objeto enumerável que produz cada string desde a string inicial até o final. Por ser enumerável, você pode encadear outros métodos enumeráveis.
"a".upto("zz").select {|ltr| ltr.include?('s') }
# => ["s", "as", "bs", "cs", "ds", "es", "fs", "gs", "hs", "is", "js", "ks", "ls", "ms", "ns", "os", "ps", "qs", "rs", "sa", "sb", "sc", "sd", "se", "sf", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sp", "sq", "sr", "ss", "st", "su", "sv", "sw", "sx", "sy", "sz", "ts", "us", "vs", "ws", "xs", "ys", "zs"]
É o mesmo que: ('a'..'zz').select {|ltr| ltr.include?('s') }
Tal como acontece com o intervalo, não existe downto
.
Não tenho certeza de quando eu usei isso, lá estamos nós!