【问题标题】:Using a method return in a string in ruby在ruby中使用方法返回字符串
【发布时间】:2014-02-23 17:48:02
【问题描述】:

我不知道如何将方法的返回值放入字符串中。我原以为会是这个样子,

def cat
 puts "Purrrrr..."
end

puts "The cat says #{cat}."

但这不起作用。我也试过了

puts "The cat says %s." % cat

puts "The cat says #{return.cat}."

还有

puts "The cat says #{send.cat}."  

我一直在尝试和查找。

【问题讨论】:

    标签: ruby string methods return


    【解决方案1】:

    它正在工作:

    def cat
      "Purrrrr..."
    end
    
    puts "The cat says #{cat}."
    # >> The cat says Purrrrr....
    

    为什么下面的输出没有像上面那样:

    def cat
     puts "Purrrrr..."
    end
    
    puts "The cat says #{cat}."
    # >> Purrrrr...
    # >> The cat says .
    

    这是因为您在方法#cat 中使用了puts "Purrrrr..."。现在,在字符串插值方法#cat 中被调用,puts 打印字符串"Purrrrr..." 并返回nil。所以puts "The cat says #{cat}." 变成了puts "The cat says #{nil}."。结果输出为:

    The cat says .
                ^ 
    

    "#{nil}" 计算结果为空字符串 ("")。所以输出不是你所期望的。

    (arup~>~)$ irb
    2.0.0-p0 :001 > nil.to_s
     => "" 
    2.0.0-p0 :002 > "foo #{nil}"
     => "foo " 
    2.0.0-p0 :003 > 
    

    puts "The cat says #{return.cat}."puts "The cat says #{send.cat}." 是无效的 ruby​​ 代码,它们会抛出错误。所以不要尝试这个!

    希望对你有帮助!

    【讨论】:

    • hmmm,这是有道理的,但是有没有办法在字符串中调用该方法,如果它是一个字符串,比如“purrrr ...”?
    • 大声笑,刚刚看到发生了什么,对不起,这东西很混乱!
    【解决方案2】:

    在 ruby​​ 中,您不必显式返回值。默认返回方法的最后一行结果。

    在这种情况下,'puts' 方法的返回值为 nil。所以方法'cat'的返回值为nil。

    如果您正在寻找返回字符串,您可以按照@Arup 的建议将字符串放在方法“cat”的最后一行。这会起作用的。

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 2020-04-13
      • 2023-03-30
      • 2012-02-05
      • 2014-12-09
      • 2012-12-02
      • 2010-11-27
      相关资源
      最近更新 更多