SyntaxError - 无例外的“)”
SyntaxError - unexcepted ")"
我是 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" => [],
我不知道他们的原因。我阅读了 Ruby 有关块的文档,它应该运行良好。请给我一些建议。
我认为 end)
是不允许的。它必须是自己的一行,或者至少在它之后有一个分号。不过,我更倾向于使用大括号:
@headers[:recipient] = {
"To" => (cc.map { |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
}),
"Cc" => [],
}
我可能会将您的逻辑更改为内联版本并压缩它以避免任何零条目:
@headers[:recipient] = {
"To" => (cc.map { |p| p.full_address == "mail@fake.sender.example.com" ? nil : p.full_address}.compact),
"Cc" => [],
}
更新 正如@sawa 提到的“(开始;结束)”是有效的。再次查看它,我意识到它在抱怨,因为 'if' 没有“结束”。
@headers[:recipient] = {
"To" => (cc.map do |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
end
end),
"Cc" => [],
}
不过,我最喜欢我的中间风格。
我是 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" => [],
我不知道他们的原因。我阅读了 Ruby 有关块的文档,它应该运行良好。请给我一些建议。
我认为 end)
是不允许的。它必须是自己的一行,或者至少在它之后有一个分号。不过,我更倾向于使用大括号:
@headers[:recipient] = {
"To" => (cc.map { |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
}),
"Cc" => [],
}
我可能会将您的逻辑更改为内联版本并压缩它以避免任何零条目:
@headers[:recipient] = {
"To" => (cc.map { |p| p.full_address == "mail@fake.sender.example.com" ? nil : p.full_address}.compact),
"Cc" => [],
}
更新 正如@sawa 提到的“(开始;结束)”是有效的。再次查看它,我意识到它在抱怨,因为 'if' 没有“结束”。
@headers[:recipient] = {
"To" => (cc.map do |p|
if not p.full_address == "mail@fake.sender.example.com"
p.full_address
end
end),
"Cc" => [],
}
不过,我最喜欢我的中间风格。