Как найти определение существующего метода?
Я новичок в программировании и Руби оба. В некотором существующем коде это говорит что-то вроде этого:
kid_raising_btn=query("switch marked:'KIDRAISING'",:isOn).first
Из этого я понимаю, что переменная kid_raising_btn
определяется, который будет запрашивать и возвращать истину или ложь, а затем вызвать метод first
(но это сбивает с толку).
Как я могу найти то, что first
делает?
2 ответа
".first" - это удобный метод. Ответ на запрос пользовательского интерфейса представлен в виде массива. Таким образом, ".first" представляет первый элемент массива. Есть несколько методов, таких как ".count"
Пример: ваш запрос:
ans = query("button",:accessibilityLabel)
Предположим, вы получите такой результат
[
[0] "icon rewards new",
[1] "icon my receipts new",
[2] "icon my account",
[3] "icon order@2x",
[4] "icon check in"
]
если вы используете ".first", как это
ans2 = query("button",:accessibilityLabel).first
в результате вы получите строку с первым элементом вместо массива.
"icon rewards new"
Теперь вы можете видеть, как вы получите первый элемент в качестве ответа.
Из вашего описания звучит так, как будто цепочка методов здесь может внести вашу путаницу, поэтому сначала давайте перепишем эту строку кода следующим образом:
query_response = query("switch marked: 'KIDRAISING'", :isOn)
kid_raising_btn = query_response.first
Теперь легче увидеть, что метод #query возвращает объект, у которого есть метод #first. Вы можете взглянуть на этот объект, чтобы увидеть, что это за класс (query_response.class
), а затем либо найдите соответствующую документацию для класса, либо найдите определение метода в вашей кодовой базе. Например, если #query возвращает массив, вы можете найти документацию здесь: http://ruby-doc.org/core-2.0.0/Array.html