Ruby语法错误,意外的tSTRING_BEG,期待':'(SyntaxError)

时间:2015-01-05 10:58:52

标签: ruby

我正在运行Ruby脚本,但收到以下错误消息。

root@li140-48:~/rbircd-master# ruby ircd.rb
ircd.rb:38:in `load': ircclient.rb:145: syntax error, unexpected tSTRING_BEG, expecting ':' (SyntaxError)
                                (value == true) ? key.upcase"#{key.upcase}=#{value}"
                                                             ^
        from ircd.rb:38:in `reload!'
        from ircd.rb:41:in `<main>'
root@li140-48:~/rbircd-master#

以下是ircclient.rb:145周围的代码块:

def send_version(detailed=false)
    if detailed
        send_numeric 351, 'RubyIRCd0.1.0.', @server.name, 'FhiXeOoZE [Linux box 2.6.18-128.1.1.el5.028stab062.3 #1 SMP Sun May 10 18:54:51 MSD 2009 i686=2309]'
        send @server.name, :notice, @nick, 'OpenSSL 0.9.8k 25 Mar 2009'
        send @server.name, :notice, @nick, 'zlib 1.2.3'
        send @server.name, :notice, @nick, 'libcurl/7.19.4 GnuTLS/2.6.6 zlib/1.2.3 c-ares/1.6.0 libssh2/0.18'
    end

    features = ServerConfig.features.clone

    features.each_slice(13) do |slice|
        slice.map! do |(key, value)|
            (value == true) ? key.upcase"#{key.upcase}=#{value}"
        end

        slice << 'are supported by this server'
        send_numeric '005', *slice
    end
end

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果您错过了else条款,那么您正在做三元组。

更改

(value == true) ? key.upcase"#{key.upcase}=#{value}"

value ? key.upcase : "#{key.upcase}=#{value}"

然后阅读How do I use the conditional operator in Ruby