【问题标题】:Failed to convert command line arguments array to symbols parameters无法将命令行参数数组转换为符号参数
【发布时间】:2012-10-19 13:06:13
【问题描述】:

在以下脚本中(对于 Ruby >= 1.9),我只是想将字符串打印到屏幕上,而不是命令行中给出的符号。

这是我的尝试 (SymbolsFromArgv.rb)

#!/usr/bin/env ruby

def switch_sybol(symbol)
    case symbol
        when :add
            "Addition !"
        when :mul
            "Multiplication !"
        else
            "Unkown symbol #{symbol} !"
    end
end

puts switch_sybol( :add )
puts switch_sybol( :mul )
puts switch_sybol( *(ARGV.collect {|elem| elem.to_sym}) )

但是,当我启动时:

$ ./SymbolsFromArgv.rb :mul

我得到以下结果:

Addition !
Multiplication !
Unkown symbol :mul !

那么,为什么我没有得到“乘法!”最后的结果?

提前致谢。

【问题讨论】:

    标签: ruby type-conversion command-line-arguments symbols


    【解决方案1】:

    ":mul".to_sym 不是:mul

    ":mul".to_sym
    => :":mul"
    

    您只需传递mul

    【讨论】:

      【解决方案2】:

      Shell 参数被解释为字符串。所以你应该$ ./SymbolsFromArgv.rb mul,否则和做的一样

      ":mul".to_sym
      => :":mul"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 2012-08-27
        • 2023-03-25
        • 2014-12-11
        • 2020-06-27
        相关资源
        最近更新 更多