Как найти определение существующего метода?

Я новичок в программировании и Руби оба. В некотором существующем коде это говорит что-то вроде этого:

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

Другие вопросы по тегам