-3

私はこのような配列を持っています

array = ["a", nil, "b"]

joinそして、私がこのようにそれを実行すると

result = array.join

putsresult「a b」ではなく「ab」になります。

ヘルプ!

EDIT私の実際のコードのコンテキストでこれを理解してください:

def caesar_cipher(initial_string, shift_number)
    letter_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

    modified_initial_string = initial_string.split("")
    modified_initial_string.map! { |letter|
        letter.downcase!
        if letter_list.include?(letter)
            letter = letter_list[letter_list.index(letter) - shift_number]
        end
    }
    result = modified_initial_string.join
    puts modified_initial_string
    puts result
end
caesar_cipher("Hello this", 1)

端末での私の結果は次のとおりです。

g
d
k
k
n

s
g
h
r
gdkknsghr
4

3 に答える 3

2

Array#join期待どおりに動作します:

>> array = ["a", " ", "b"]
=> ["a", " ", "b"]
>> array.join
=> "a b"
>> puts array.join
a b

更新: 完全なコード

大文字と小文字を区別しませんでしたelse

def caesar_cipher(initial_string, shift_number)
    letter_list = (?a..?z).to_a

    initial_string.each_char.map { |letter|
        letter.downcase!
        if letter_list.include?(letter)
            letter_list[letter_list.index(letter) - shift_number]
        else
            letter
        end
    }.join
end

puts caesar_cipher("Hello this", 1)
于 2013-10-20T07:36:14.567 に答える