(cc.map do |p| -6ren">
gpt4 book ai didi

ruby - SyntaxError - 意外的 ")"

转载 作者:行者123 更新时间:2023-12-03 08:29:07 29 4
gpt4 key购买 nike

我是 ruby 的初学者。我想修复其中一个邮件软件中的错误。我应用的修复代码如下:

@headers[:recipient] = {
"To" => (cc.map do |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
end),
"Cc" => [],
}

不幸的是,这给了我这些错误:
home/tymon/mmm/lib/mmm/modes/reply_mode.rb:103: syntax error, unexpected ')', expecting keyword_end (SyntaxError)
end),
^
/home/tymon/mmm/lib/mmm/modes/reply_mode.rb:104: syntax error, unexpected =>, expecting keyword_end
"Cc" => [],

我不知道他们的原因。我阅读了有关 block 的 Ruby 文档,它应该可以正常工作。请给我一些建议。

最佳答案

我不认为end)被允许。它必须是它自己的行,或者至少后面有一个分号。不过,我更倾向于使用大括号:

@headers[:recipient] = {
"To" => (cc.map { |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
}),
"Cc" => [],
}

而且我可能会将您的逻辑更改为内联版本并对其进行压缩以避免任何 nil 条目:
@headers[:recipient] = {
"To" => (cc.map { |p| p.full_address == "mail@fake.sender.example.com" ? nil : p.full_address}.compact),
"Cc" => [],
}

更新 正如@sawa 提到的“(开始;结束)”是有效的。再看一遍,我意识到它在提示,因为“如果”没有“结束”。
@headers[:recipient] = {
"To" => (cc.map do |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
end
end),
"Cc" => [],
}

不过,我最喜欢我的中间风格。

关于ruby - SyntaxError - 意外的 ")",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869938/

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