Использование std :: vector :: push_back с std :: mem_fun и std :: bind1st

Лучший обходной путь - использовать этот фрагмент кода в HomeView:

protected override void OnCreate(Bundle bundle)
{
    var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(this);
    setupSingleton.EnsureInitialized();
    base.OnCreate(bundle);
    // my code here
}

Спасибо @kmiterror за подсказку.

134
задан finnw 25 May 2011 в 16:36
поделиться

3 ответа

Почему там, не продолжаются?

, поскольку это является ненужным. Существует очень немного ситуаций, где dev был бы нужен он.

А, Когда у Вас есть очень простой цикл, говорят 1-или с 2 лайнерами, затем можно просто изменить к лучшему условие цикла, и это - все еще много читаемое.

B), Когда Вы пишете простой процессуальный код (иначе. как мы написали код в прошлом веке), необходимо также применять структурное программирование (иначе. как мы написали лучший код в прошлом веке)

C), Если Вы пишете объектно-ориентированный код, Ваше тело цикла должно состоять из не больше, чем одного или двух вызовов метода, если этого нельзя выразить в одном - или с двумя лайнерами (в этом случае, см. A)

D) при написании функционального кода просто возвратите простой последний вызов следующего повторения.

единственный случай, когда Вы хотели бы использовать continue ключевое слово, - то, если Вы хотите кодировать Lua как, он - Python, который это просто не.

, Что обходные решения там для него?

, Если A) не применяется, в этом случае нет никакой потребности ни в каких обходных решениях, необходимо делать Структурированное, Объектно-ориентированное или Функциональное программирование. Это - парадигмы, для которых был создан Lua, таким образом, Вы будете бороться против языка, если Вы будете стараться изо всех сил избегать их шаблонов.

0
ответ дан 23 November 2019 в 23:56
поделиться

Я никогда раньше не использовал Lua, но я погуглил и пришел вот к чему:

http://www.luafaq.org/

Проверьте вопрос 1.26.

Это распространенная жалоба. Авторы Lua посчитали, что continue был лишь одним из нескольких возможных новых механизмов потока управления (тот факт, что он не может работать с правилами области видимости repeat/until, был второстепенным фактором)

В Lua 5.2 есть оператор goto, который можно легко использовать для выполнения той же работы.

8
ответ дан 23 November 2019 в 23:56
поделиться

Способ, которым язык управляет лексической областью, создает проблемы с включением как goto , так и continue . Например,

local a=0
repeat 
    if f() then
        a=1 --change outer a
    end
    local a=f() -- inner a
until a==0 -- test inner a

Объявление local a внутри тела цикла маскирует внешнюю переменную с именем a , и область действия этой локальной переменной распространяется на условие до тех пор, пока , поэтому условие проверяет самый внутренний a .

Если бы continue существовал, его нужно было бы ограничить семантически, чтобы он был действительным только после того, как все переменные, используемые в условии, попали в область видимости.Это условие сложно задокументировать для пользователя и реализовать в компиляторе. Обсуждались различные предложения по этому поводу, включая простой ответ запрета continue с помощью стиля цикла повтор ... до . До сих пор ни у одного из них не было достаточно убедительного варианта использования, чтобы включить их в язык.

Как правило, обходной путь заключается в том, чтобы изменить условие, которое может вызвать выполнение continue , и собрать остальную часть тела цикла при этом условии. Итак, следующий цикл

-- not valid Lua 5.1 (or 5.2)
for k,v in pairs(t) do
  if isstring(k) then continue end
  -- do something to t[k] when k is not a string
end

можно было бы написать

-- valid Lua 5.1 (or 5.2)
for k,v in pairs(t) do
  if not isstring(k) then 
    -- do something to t[k] when k is not a string
  end
end

. Он достаточно ясен и обычно не является обузой, если у вас нет серии тщательно продуманных отбраковок, которые управляют работой цикла.

64
ответ дан 23 November 2019 в 23:56
поделиться
Другие вопросы по тегам:

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