Iup Lua callback & mdash; Что я делаю неправильно?

try

val f = sc.textFile("./README.md")
1
задан ColeValleyGirl 16 January 2019 в 13:32
поделиться

3 ответа

Если вы не хотите встраивать функцию обратного вызова в вашу функцию, вы можете определить ее до, а затем назначить ее указанному месту назначения.

function Callback(self, a, b)
   -- do your work ...
end

function CallbackUser1()
    targetTable = { }
    targetTable.entry = Callback
end

function CallbackUser2()
    otherTargetTable = { }
    otherTargetTable.entry = Callback
end

Это решение требует, чтобы аргументы всегда были одинаковыми.

Примечание: Все следующие определения идентичны

function Table:func(a, b) ... end
function Table.func(self, a, b) ... end
Table.func = function(self, a, b) ... end
0
ответ дан Phins 16 January 2019 в 13:32
поделиться

Проблема в использовании Lua.

В первом случае, помните, что это:

function ih:action(text, item, state)

переводится в это:

function action(ih, text, item, state)

Так что отсутствует параметр ih.

Во втором случае listCase существует только после вызова MakeAnIupBox. Вы можете решить это, объявив функцию внутри области действия MakeAnIupBox.

0
ответ дан Antonio Scuri 16 January 2019 в 13:32
поделиться

Опираясь на предложение Антонио Скури, которое не было полностью явным, я решил, что код должен читать:

function MakeAnIupBox
    --make some more elements here
    listPlace = iup.list{}
    listPlace.sort = "YES"
    listPlace.dropdown = "YES" 
    --populate the list here
    --now handle callbacks
    listPlace.action = function(self, text, item, state) PlaceAction(listPlace, text, item,  state) end
end

function PlaceAction(ih, text, item, state)
    listAddress.REMOVEITEM = "ALL"
    if state == 1 then -- a place has been selected
    --code here to populate the Addresses list
    end
end
0
ответ дан ColeValleyGirl 16 January 2019 в 13:32
поделиться
Другие вопросы по тегам:

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