有没有办法让方法知道作为参数传递到方法中的调用方中的变量的名称?

真实的用例场景:我使用自己开发的工具,它只是将字符串输出到一个文件.这不是什么花哨的东西,但符合我的目的.因此,例如,我可能希望输出一个简单的字符串:

MYTOOL.puts 'some useful information'

我经常想输出变量的名称和值.我发现自己经常这样做:

MYTOOL.puts 'variable: ' + variable

我希望能够做到这一点:

MYTOOL.showvar variable

在我的Perl时代,我能够使用预处理器,因此我可以这样做:

showvar $variable;

不过,我宁愿避免使用预处理器.在Ruby中有没有办法做到这一点?

编辑:我使用的是Ruby的以下版本:

Ruby 2.7.0p0(2019-12-25修订版647ee6f091)[x86_64-linux-gnu]

推荐答案

您可以使用简短的语法来传递Ruby 3.1中引入的关键字参数,例如

variable = "hello world"
puts variable:
# => {:variable=>"hello world"}

这相当于调用

puts variable: variable

Ruby的这一特性是在#14579中引入的,并在Ruby 3.1中发布.

Ruby相关问答推荐

带有虾Ruby 的动态标题

Ruby错误-应为数组或字符串,已获取哈希

CarrierWave Multi-uploader重命名现有文件

使用 Ruby 仅删除数组中的特定重复项

在 Ruby 中,rescue语句可以嵌套在哪些 struct 中

Rspec: expectvsexpect什么区别?

如何在 Ruby 中生成子进程?

在单个 node 上使用 XPath 返回所有 node 中的元素

C# ?? Ruby 中的运算符?

Ruby代码美化,多行拆分长指令

符号到字符串问题

在 OSX 10.10 Yosemite 上安装 Nokogiri

用 Ruby 解析 XML

ruby 中&:运算符的功能是什么?

使用 RSpec 测试哈希内容

Ruby 实例变量何时设置?

要散列的散列数组

给定一组参数,如何将这些参数发送到 Ruby 中的特定函数?

Ruby 类继承:什么是`<<`(双倍小于)?

如何在 Ruby 中实现回调?