Как заставить vim распознавать многострочные комментарии python? [Дубликат]

Полагаю, я понимаю, о чем вы спрашиваете. Хотя вы говорите, что хотите «вернуть» его (по сути) из метода выборки, достаточно сказать, что вы просто хотите использовать значение, полученное после завершения выборки. Если это так, это то, что вам нужно сделать:

  1. Создать переменную в верхней части вашего класса
  2. Извлечь ваше значение (которое вы сделали в основном правильно)
  3. Установите общедоступную переменную в вашем классе, равную полученному значению

. После того, как ваша выборка завершится успешно, вы можете делать много вещей с переменной. 4а и 4b - некоторые простые примеры:

4a. Изменить. В качестве примера использования вы можете запустить все, что вам нужно для запуска в вашем классе, который использует yourNameVariable (и вы можете быть уверены, что yourNameVariable не является нулевым)

4b. Изменить: в качестве примера использования вы можете использовать переменную в функции, которая запускается кнопкой onClickListener.


Попробуйте это.

// 1. Create a variable at the top of your class
private String yourNameVariable;

// 2. Retrieve your value (which you have done mostly correctly)
private void getUserName(String uid) {
    databaseReference.child(String.format("users/%s/name", uid))
            .addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // 3. Set the public variable in your class equal to value retrieved
            yourNameVariable = dataSnapshot.getValue(String.class);
            // 4a. EDIT: now that your fetch succeeded, you can trigger whatever else you need to run in your class that uses `yourNameVariable`, and you can be sure `yourNameVariable` is not null.
            sayHiToMe();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}

// (part of step 4a)
public void sayHiToMe() {
  Log.d(TAG, "hi there, " + yourNameVariable);
}

// 4b. use the variable in a function triggered by the onClickListener of a button.
public void helloButtonWasPressed() {
  if (yourNameVariable != null) {
    Log.d(TAG, "hi there, " + yourNameVariable);
  }
}

Затем вы может использовать yourNameVariable, где бы вы ни захотели на протяжении всего вашего класса.


Примечание: просто убедитесь, что вы проверяете, что yourNameVariable не является нулевым при его использовании, поскольку onDataChange является асинхронным и может не завершиться в то время, когда вы пытаетесь использовать его в другом месте.

16
задан silvernightstar 16 April 2013 в 17:25
поделиться

3 ответа

вы можете добавить следующую строку:

syn region Comment start=/"""/ end=/"""/

в ваш ~ / .vim / after / syntax / python.vim. Вы можете создать этот файл, если он не существует.

16
ответ дан Akobold 28 August 2018 в 19:21
поделиться

PEP 257 предписывает использовать "" "тройные двойные кавычки" "" для docstrings. Не обязательно включать «тройные одинарные кавычки» или «одиночные двойные кавычки» в докстроны. Существует одна трудность, заключающаяся в том, что у нас есть классные докстры, функции docstrings, docstrings модуля, атрибуты docstrings и дополнительные docstrings. Вот почему я решил, что считать docstring проще:

syn region pythonDocString start=+^\s*"""+ end=+"""+ keepend contains=...

И затем:

HiLink pythonDocString        Comment

Вы можете увидеть примеры в этом скрипте (search pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

0
ответ дан Andrey 28 August 2018 в 19:21
поделиться

Для меня работало следующее:

syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?'''+ end=+'''+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError

Взято из измененного python.vim из здесь .

6
ответ дан silvernightstar 28 August 2018 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: