0

我检查了一些例子,包括

http://pymotw.com/2/readline/

class SimpleCompleter(object):

    def __init__(self, options):
        self.options = sorted(options)
        return

    def complete(self, text, state):
        response = None
        if state == 0:
            # This is the first time for this text, so build a match list.
            if text:
                self.matches = [s 
                                for s in self.options
                                if s and s.startswith(text)]
                logging.debug('%s matches: %s', repr(text), self.matches)
            else:
                self.matches = self.options[:]
                logging.debug('(empty input) matches: %s', self.matches)

        # Return the state'th item from the match list,
        # if we have that many.
        try:
            response = self.matches[state]
        except IndexError:
            response = None
        logging.debug('complete(%s, %s) => %s', 
                      repr(text), state, repr(response))
        return response

我无法弄清楚为什么状态会增加以及它的目的是什么。对于 state=0 和匹配单词的一个元素列表,它可以正常工作,但是当状态增加时,我会引发错误(IndexError)

谢谢

4

1 回答 1

0

state是可能匹配的数量,您可以使用它来返回多个结果。即当state == 1返回“cmd1”时,当state == 2返回“command2”时,当state == 3返回 None 时传递一个 2 匹配结果。

于 2013-09-09T15:00:22.547 回答