【问题标题】:assigning a method result to a variable in ruby将方法结果分配给ruby中的变量
【发布时间】:2018-01-24 20:35:35
【问题描述】:

我敢肯定很难找到一个更简单的问题,但我是一个完全的新手。我进行了广泛的搜索,但由于某种原因无法找到答案。这是我的代码:

puts "Enter F for Fahrenheit and C for Celsius."

x = gets.chomp.downcase

def ftoc(fahrenheit)
  (fahrenheit.to_f - 32.0) * (5.0 / 9.0)
end

if x == "f"
  puts "Enter your temp:"
  temp = gets.chomp.to_i
  ftoc temp
elsif x == "c"
  puts "Enter your temp:"
  temp = gets.chomp.to_i
  ctof temp
else
  puts "That does not compute."
end

我只是想将方法的返回结果放入一个变量中,以便我可以在其他地方使用它......

【问题讨论】:

  • 也是这个网站的新手,我不知道为什么我的循环代码都混在一起了。我想这真的没关系。
  • 您需要缩进四个空格以使其格式正确,或突出显示它并按下{} 按钮为您执行此操作。
  • 这里的人可能是苛刻的评判者,但我不会太担心。从长远来看,一切都会好起来的。

标签: ruby variables methods


【解决方案1】:

请记住,像 ctof temp 这样的调用只是启动一个方法,然后,因为您没有将结果放在任何地方,所以立即丢弃它。

为了清理这段代码,让我们更好地组织它:

# Temperature conversion method
def ftoc(fahrenheit)
  (fahrenheit.to_f - 32.0) * (5.0 / 9.0)
end

# User input method
def temperature_prompt!
  puts "Enter F for Fahrenheit and C for Celsius."
  x = gets.chomp.downcase

  case (x)
  when "f"
    puts "Enter your temp:"
    temp = gets.chomp.to_i
    ftoc temp
  when "c"
    puts "Enter your temp:"
    temp = gets.chomp.to_i
    ctof temp
  else
    puts "That does not compute."
  end
end

现在您可以利用在 Ruby 中像 ifcase 这样的事实实际上返回值。在这种情况下,它是每个块中执行的最后一项的值,因此结果不会被丢弃,它只是传递:

temp = temperature_prompt!

如果您输入一个无效值,您将得到puts 的结果,即nil

这里有一点需要考虑:如果您可以描述模式,Ruby 非常擅长解析任意文本。这是一个简单的输入例程:

def temperature_prompt!
  puts "Enter degrees (e.g. 8F, 2C)"

  case (input = gets.chomp.downcase)
  when /(\d+)f/
    ftoc $1
  when /(\d+)c/
    ctof $1
  else
    puts "That does not compute."
  end
end

如果需要,您可以添加到这些模式中以允许 -2C3.4°F 之类的内容。

【讨论】:

  • 嘿,感谢您抽出宝贵的时间和所有额外的信息。我一定会调查的。代码现在可以工作并打印出转换后的温度,但我仍然不确定如何将答案放入稍后在程序中调用的变量中......代码运行后,我想打印出来类似: puts "转换后的变量是 " + def_result_variable 或类似的东西......
  • Programming Ruby 这本书可在线获取,是 Ruby 入门的绝佳资源。如果您喜欢该版本,则可以从发行商处获得更新的版本,值得购买。
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多