worker中接收的数据打印为nil

想把worker中接收的数据打印出来,但是work内部处可以正常打印obj.Name,但是printf函数打印变量为nil

 function dpu_yinshan:printf(obj_name)
    log:error('obj_name231 is %s', obj_name)
end

local w = worker.new(0)
function dpu_yinshan:task_update_yinshan_temp(obj)
    w:start([[
                local worker = ...
                local log = require 'mc.logging'
                local object_name = worker:recv()
                log:error('execute123 %s', object_name)
                local dpu_yinshan_obj = require 'dpu_service.dpu_yinshan_object'
                while 1 do
                    dpu_yinshan_obj.printf(object_name)
                    worker:sleep(2000)
                end
            ]])
    w:send(obj.name, true)
end

换种方式,将object_name申明为全局变量,想把worker中接收的数据打印出来,worker内部处可以正常打印obj.Name,但是printf函数打印全局变量还是为nil

local object_name
function dpu_yinshan:printf()
    log:error('obj_name231 is %s', object_name)
end

local w = worker.new(0)
function dpu_yinshan:task_update_yinshan_temp(obj)
    w:start([[
                local worker = ...
                local log = require 'mc.logging'
                object_name = worker:recv()
                log:error('execute123 %s', object_name)
                local dpu_yinshan_obj = require 'dpu_service.dpu_yinshan_object'
                while 1 do
                    dpu_yinshan_obj.printf()
                    worker:sleep(2000)
                end
            ]])
    w:send(obj.name, true)
end

想咨询下如何将worker中接收到的变量在其他调用函数中可以用起来?

已解决,定义函数用冒号,调用地方就用冒号调用函数;同理,用点号定义函数,调用地方就用点号调用函数