gpt4 book ai didi

ruby - 中间步骤的局部变量

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:45 25 4
gpt4 key购买 nike

您好我想知道是否有人可以向我解释为什么下面代码中编写的 map 函数是按照其编写方式编写的。具体为什么我们需要做

results = letters.map do |letter| encrypted_letter = encrypt_letter(letter) 

不仅仅是做

results = letters.map do |letter| encrypt_letter(letter)

class Encryptor
def cipher
{"a" => "n", "b" => "o", 'c' => 'p', 'd' => 'q',
'e' => 'r', 'f' => 's', 'g' => 't', 'h' => 'u',
'i' => 'v', 'j' => 'w', 'k' => 'x', 'l' => 'y',
'm' => 'z', 'n' => 'a', 'o' => 'b', 'p' => 'c',
'q' => 'd', 'r' => 'e', 's' => 'f', 't' => 'g',
'u' => 'h', 'v' => 'i', 'w' => 'j', 'x' => 'k',
'y' => 'l', 'z' => 'm'}
end

def encrypt_letter(letter)
lowercase_letter = letter.downcase
cipher[lowercase_letter]
end

def encrypt(string)
letters = string.split("")
results = letters.map do |letter|
encrypted_letter = encrypt_letter(letter)
end
results.join
end

def decrypt_letter(letter)
lowercase_letter = letter.downcase
cipher.key(lowercase_letter)
end

def decrypt(string)
letters = string.split("")
results = letters.map do |letter|
decrypted_letter = decrypt_letter(letter)
end

results.join
end

end

最佳答案

没有理由;变量立即被丢弃。

除此之外,我还认为它具有误导性和缺乏交流性。

大部分代码看起来有点冗长,例如:

def encrypt(string)
letters = string.split("")
results = letters.map do |letter|
encrypted_letter = encrypt_letter(letter)
end
results.join
end

在我看来,这会更像 Ruby,因为它更接近于:

def encrypt(str)
str.chars.collect { |c| encrypt(c) }.join
end

它可以比这更严格,或者以其他方式编写,尽管其中一些是偏好问题。例如,each_with_object 可以与铲子运算符一起使用,但它的“功能性”较低。

(在收集时,我更喜欢 collect 而不是 map;如果时间更长,我发现这种偏好更具交流性。)

将功能扩展到更多行并不能提高可读性,但这取决于上下文。刚接触 Ruby 或方法链的人可能会对(IMO 更规范的)单行代码感到困惑。

关于ruby - 中间步骤的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16781988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com