我调试了一些Ruby代码并遇到了一些我不熟悉的东西。
user_array = user_array.send(:[], hash_key)
这条线做什么?我被传递给:[]
的{{1}}作为第一个参数感到困惑。
作为参考,send
是一个类的实例(user_array
),而Chef::Node
是一个字符串。
答案 0 :(得分:7)
send
动态调用方法:
obj.send(:method, arg1, arg2)
实际上会像:
obj.method(arg1, arg2)
因此,在您的情况下,代码相当于:
user_array.[](hash_key)
方法[]
是一个特殊的方法名称,通常使用其语法糖形式用ruby编写:
user_array[hash_key]
答案 1 :(得分:2)
它只是调用[]
方法。它返回数组/哈希的元素。这相当于致电:
user_array[hash_key]
答案 2 :(得分:0)
使用其余参数发送第一个参数。
在这种情况下,它应该转换为user_array [hash_key]