Total Pageviews

Tuesday, March 25, 2014

Set ក៏មានត្រកូលដែរ

Setfenv()
គេប្រើវាសំរាប់បញ្ចូល environment ឬក៏ table ដែលឡូអាអាចរក្សាគ្រប់ទាំង global variables ក្នុងការប្រើ ប្រាស់សំរាប់ function ដែលបានផ្តល់។

Syntax: setfenv (f, table )

F(តំរូវការ) function or number បើសិនជា f គឺជាហ្វាំងសិន ពេលនោះ setfenv() បញ្ចូលនៅ environment សំរាប់ហ្វាំងសិននោះ។ បើសិនជាលេខ environment សំរាប់ហ្វាំងសិនដែល stack level ត្រូវបានបញ្ចូល
លេខ១មានន័យថា current function ចំណែកលេខ២មានន័យថា ហ្វាំងសិនដែលបានហៅនៅ current function។ នៅពេលបញ្ចូលទៅកាន់ 0 setfenv() បានប្តូរនៅ environment ដែល running thread (ក្នុង ករណីដែលមិនមានអ្វីត្រឡប់)
Table(តំរូវការ) ជាតារាងដែលផ្ទុក New Environment

Setmetatable()
ប្រើសំរាប់បញ្ចូល metastable សំរាប់ given table (អ្នកមិនអាចប្តូរ metastable សំរាប់ប្រភេទផ្សេងពី ឡូអា) បើសិនជា Metatable គឺជា nil វានឹងលុបចេញនៅ metastable ពីតារាង។ បើសិនជា Original metastable មាន​​ _metatable field វានឹងបង្ហាញ Error។ សំរាប់ហ្វាំងសិននេះនឹងត្រឡប់មកវិញនៅតារាង ដូចគ្នាដែលផ្តលដោយ first argument របស់ហ្វាំងសិន (with its metastable now set)

Syntax: setmetatable (table, metatable)
Table(តំរូវការ)វាជាតារាងរបស់ Lua table ដែល metastable ដែលអ្នកចង់ modify
Metastable(តំរូវការ)វាជាឡូអា table ដែលបញ្ចូលជា metastable ថ្មីសំរាប់ table
សូមមើលកូដះ
local t = {}
local mt = { __index = t }

function t.new()
    return setmetatable( {}, mt )
end 

return t

1 comment: