【问题标题】:How to print out value and name of each arg from a splat argument list如何从 splat 参数列表中打印出每个参数的值和名称
【发布时间】:2019-03-21 21:41:49
【问题描述】:

我有

a = 'a string'
b = 3

我使用这种常见的模式:

puts "a: #{a}, b: #{a}"

我想用一种方法来做到这一点,例如,

def puts_auto(*args)
  str = args.map { |arg| "#{arg.object_name #{a}" }.join('')
  puts str
end

object_name 查找用于创建 arg 的对象的名称。有object_name这样的方法吗?有没有办法从 splat 参数列表中打印每个参数的值和名称?

【问题讨论】:

标签: ruby


【解决方案1】:

使用Mark关于此SO question的建议,以下工作

  def puts_auto (*args, &b)
    str = args.map { |arg| "#{arg} = #{eval(arg.to_s, b.binding)}" }.join(', ')
    puts str
  end

所以

puts_auto(:a, :b){} # outputs `a = a string, b = 3`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多