int result; lua_pushstring(L, key); lua_gettable(L, -2); /* get background[key] */ if (!lua_isnumber(L, -1)) error(L, "invalid component in background color"); result = (int)lua_tonumber(L, -1) * MAX_COLOR; lua_pop(L, 1); /* remove number */ return result; } ᆃૌᄜՑ૫ؓ؟֥໙ีğॖିթᄝޓ؟۱ getfield ֥ϱЧđkey ֥োđvalue ֥োđհ༂ԩ֩҂࣐ཌྷbLua API ᆺิ܂ਔ၂۱ lua_gettable ݦඔđࢤ൳ table ᄝᅜᇏ໊֥ᇂູҕඔđࡼؓႋ key ᆴԛᅜđْ߭ა key ؓႋ֥ valueb ૌഈ૫֥ getfield ݦඔࡌק table ᄝᅜפđၹՎđlua_pushstring ࡼ key ೆᅜᆭުđtable ᄝ-2 ໊֥ᇂbْ߭ ᆭభđgetfield ߶ࡼᅜ߫گ֞טႨభ֥ሑb ૌؓഈ૫֥২ሰቔഥđࡆೆbႨಯಖॖၛႨ tableđ൞္ॖ ၛູ܋҆ٳ֥ყקၬሳđູਔൌགྷᆃ۱ۿିđૌᄝ C սᇏླေ၂۱ tableğ struct ColorTable { char *name; unsigned char red, green, blue; } colortable[] = { {"WHITE", MAX_COLOR, MAX_COLOR, MAX_COLOR}, {"RED", MAX_COLOR, 0, 0}, {"GREEN", 0, MAX_COLOR, 0}, {"BLUE", 0, 0, MAX_COLOR}, {"BLACK", 0, 0, 0}, ... {NULL, 0, 0, 0} /* sentinel */ }; ૌ֥ᆃ۱ൌགྷ߶ႨԷࡹ၂۱ಆअэਈđ ಖުႨ table Ԛ߄ᆃུಆ अэਈbࢲݔބႨᄝЧᇏႨ༯૫ᆃࠫྛս൞၂ဢ֥ğ WHITE = {r=1, g=1, b=1} RED = {r=1, g=0, b=0} ... ЧᇏႨקၬ֥ބႋႨᇏčC սĎקၬ֥҂ᆭԩᄝႿğႋႨᄝЧ ᆭభᄎྛb ູਔॖၛഡᇂ table თ֥ᆴđૌקၬ۱ڣᇹݦඔ setfieldĠᆃ۱ݦඔࡼ field ֥෬ႄ