在Ruby上编写一个具有已定义函数的新文件

在Ruby上编写一个具有已定义函数的新文件,ruby,function,Ruby,Function,在练习19的《学习Ruby的艰难之路》一书中,它说人们应该使用提供的函数: def cheese_and_crackers(cheese_count, boxes_of_crackers) puts "You have #{cheese_count} cheeses!" puts "You have #{boxes_of_crackers} boxes of crackers!" puts "Man that's enough for a party!" puts "Get a

在练习19的《学习Ruby的艰难之路》一书中,它说人们应该使用提供的函数:

def cheese_and_crackers(cheese_count, boxes_of_crackers)
  puts "You have #{cheese_count} cheeses!"
  puts "You have #{boxes_of_crackers} boxes of crackers!"
  puts "Man that's enough for a party!"
  puts "Get a blanket.\n"
end
并用它探索不同的方法。我尝试探索函数的参数并用它编写文本:

file = ARGV.first

puts "Let's make a test?"
puts "Does the output file exist? #{File.exist?(arquivo)} "
puts "Ready, hit RETURN to continue, CTRL-C to abort."

$stdin.gets

def success(price, recipe)
  puts """Text goes on like this:
  In order to become a coder, You must dedicate yourself.\n
  For that, you must pay a price, such as #{price}\n
  Becoming a coder also requires #{recipe}\n"""
end

puts "What is the price to pay in order to become a coder?"
price = $stdin.gets
puts "What are the fundamental components in order to become a coder?"
recipe = $stdin.gets

coder = success(price, recipe)

motivational = File.open(file, 'w')
motivational.write(coder)

puts "Read this every day."

但我似乎无法让它将函数写入新的
test.txt
文件。
test.txt
文件显示为空。

调用
put
时,您正在写入stdout,但返回值将为空

更改此项:

def success(price, recipe)
  return """Text goes on like this:
  In order to become a coder, You must dedicate yourself.\n
  For that, you must pay a price, such as #{price}\n
  Becoming a coder also requires #{recipe}\n"""
end
然后还:

motivational.close()
编辑:这里有一个扩展的解释:当调用
put
时,您只是将字符串写入stdout,这是程序的默认输出。方法(函数)可以有一个返回值。对于
success
方法,需要返回字符串,以便将其写入文件。如果调用
put
而不是
return
,则
success
方法将不会返回任何值,因此将文件保留为空

至于
close()
调用,建议在脚本结束之前关闭文件流

有关更多信息,请查看这些参考资料:


调用
put
时,您正在写入标准输出,但返回值将为空

更改此项:

def success(price, recipe)
  return """Text goes on like this:
  In order to become a coder, You must dedicate yourself.\n
  For that, you must pay a price, such as #{price}\n
  Becoming a coder also requires #{recipe}\n"""
end
然后还:

motivational.close()
编辑:这里有一个扩展的解释:当调用
put
时,您只是将字符串写入stdout,这是程序的默认输出。方法(函数)可以有一个返回值。对于
success
方法,需要返回字符串,以便将其写入文件。如果调用
put
而不是
return
,则
success
方法将不会返回任何值,因此将文件保留为空

至于
close()
调用,建议在脚本结束之前关闭文件流

有关更多信息,请查看这些参考资料:


你能说得更清楚些吗?你所说的返回值是什么意思?还有,在函数中返回意味着什么?@PetrusLee当然!刚才加了一个更详细的解释,你能说清楚吗?你所说的返回值是什么意思?还有,在函数中返回意味着什么?@PetrusLee当然!只是增加了一个更详细的解释。