我正在调试一些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/