如何找到现有方法的定义?

时间:2013-11-14 01:22:29

标签: ruby rubygems calabash

我是编程和Ruby的新手。在一些现有的代码中,它说的是这样的:

kid_raising_btn=query("switch marked:'KIDRAISING'",:isOn).first

据此,我了解定义了一个变量kid_raising_btn,它将查询并返回true或false,然后调用方法first(但这很令人困惑)。

如何找到first的内容?

2 个答案:

答案 0 :(得分:1)

根据你的描述,这听起来像链接的方法可能会导致你的困惑,所以首先让我们重写这样的代码行:



    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#method-i-first

答案 1 :(得分:1)

“。first”是一种方便的方法。 UI查询的答案以数组形式出现。 所以“.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

你将得到一个带有第一个元素的String,而不是数组。

"icon rewards new"

现在你可以看到第一个元素作为答案