В Ruby как сказать, что два метода или две функции одинаковы? - PullRequest
0 голосов
/ 21 января 2020

Например, чтобы проверить, может ли

CGI::parse == CGI.parse

(после выполнения require "cgi"), как это сделать?

1 Ответ

1 голос
/ 21 января 2020

CGI.parse - недопустимый код, поскольку вы вызываете метод (без аргументов, а метод требует его).

Однако в ruby (почти) все является объектом - который включает методы! (Метод является экземпляром класса: Method.)

Вы можете получить доступ к методу CGI::parse через: CGI.method(:parse).

Затем, чтобы проверить, что два метода равны , вы можете использовать метод == в классе Method :

CGI.method(:parse) == CGI.method(:parse) #=> true

Из документации ruby:

Два объекта метода равны, если они связаны с одним и тем же объектом и ссылаются на одно и то же определение метода, а их владельцы - один и тот же класс или модуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...