我正在调试一些ruby代码,发现了一些我不熟悉的东西。

  user_array = user_array.send(:[], hash_key)

这条线是干什么的?我被作为第一个参数传递给:[]send搞糊涂了。
作为参考,user_array是类(Chef::Node的实例,hash_key是字符串。

最佳答案

send动态调用方法:

obj.send(:method, arg1, arg2)

实际上会像:
obj.method(arg1, arg2)

因此,在您的情况下,代码相当于:
user_array.[](hash_key)

method[]是一个特殊的方法名,通常用ruby编写,使用其语法糖形式:
user_array[hash_key]

关于ruby - :[]在此Ruby语句中传递给.send时会做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24781424/

10-15 09:50