【问题标题】:to_s and to_sym dont workto_s 和 to_sym 不起作用
【发布时间】:2012-12-26 03:13:17
【问题描述】:

就这么简单

c = :cat
c.to_s
puts c.class

给我符号,并且

c = "cat"
c.to_sym
puts c.class

给出字符串。我使用的 Ruby 是 1.9.3,文档说这应该将符号转换为字符串,并将字符串转换为符号。可能有什么问题?

【问题讨论】:

    标签: ruby string symbols


    【解决方案1】:

    尝试:

    c = :cat
    c = c.to_s
    puts c.class # "String"
    
    c = "cat"
    c = c.to_sym
    puts c.class # "Symbol"
    

    【讨论】:

      【解决方案2】:

      to_sto_sym 不会改变原始变量,而是返回一个值。你需要用.to_s在链中调用.class

      c = :cat
      c.to_s.class
      # "String"
      
      c = "cat"
      c.to_sym.class
      # "Symbol"
      

      如果你想转换一个新的变量,你必须给它赋值。

      c = "cat"
      d = c.to_sym
      puts d.class
      # d is a symbol
      # "Symbol"
      

      【讨论】:

      • 好的,这行得通,但是这是否意味着 c.to_s 实际上完全没用?
      • @KubaPolaczek 不,这意味着你在需要的地方调用它。它非常有用,我一直在使用它。如果您需要一个新变量,请赋值。
      【解决方案3】:

      to_sto_sym 返回新值,它们不转换变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 2013-04-23
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多