Closures
hookmetamethod
在 value 上查找 metamethod function,并通过 hookfunction hook 该 function。first argument 可以是 raw metafield lookup 接受的任何 value。second argument 必须是 string metamethod name,third argument 必须是 function replacement。如果 raw metafield lookup 找不到 named metafield,该 function 会对 argument 2 抛出 “Metamethod doesn’t exist”。如果 metafield 存在但不是 function,会对 argument 2 抛出 “Metamethod isn’t a function”。当 metafield 是 function 时,hookmetamethod 会以 found metamethod function 作为 target 调用 hookfunction,并返回 hookfunction 的 cloned original closure。