"ÇÔ¼ö °´Ã¼"´Â º¸Åë ´ÙÀ½À» ¶æÇÕ´Ï´Ù:
ÇÔ¼ö °´Ã¼´Â ´ÙÀ½°ú ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
»ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö °´Ã¼´Â ´ÙÀ½ ÀÏ¹Ý ÆÐÅÏÀ» µû¶ó¾ß ÇÕ´Ï´Ù:
class YourClassName { Call(a, b) { ; ÇÊ¿äÇÑ ¸¸Å ¸Å°³º¯¼ö¸¦ ¼±¾ðÇϰųª, array*¸¦ ¼±¾ðÇÕ´Ï´Ù. ;... } __Call(method, args*) { if (method = "") ; For %fn%() or fn.() return this.Call(args*) if (IsObject(method)) ; ÀÌ ÇÔ¼ö °´Ã¼°¡ ¸Þ½îµå·Î »ç¿ëµÇ¸é. return this.Call(method, args*) } ;... }
Á¤È®ÇÏ°Ô ¾î´À ºÎºÐÀÌ ÇÊ¿äÇÑÁö´Â »ç¿ë¹ý¿¡ µû¶ó ´Ù¸¨´Ï´Ù:
%this%()
³ª this.()
¸¦ »ç¿ëÇß´Ù¸é method
´Â ºó ¹®ÀÚ¿ÀÔ´Ï´Ù.IsObject(method)
´Â ÂüÀÌ°í method
¿¡´Â ¸ñÇ¥ °´Ã¼¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò°¡ ´ã±é´Ï´Ù. ¿¹¸¦ µé¾î, x.y
°¡ this
ÇÔ¼ö °´Ã¼¸¦ °¡¸®Å°¸é, x.y()
→ this[x]()
→ this.__Call(x)
→ this.Call(x)
.
__CallÀ¸·Î Á÷Á¢ °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, __CallÀ» Call·Î ¹æÇâÀüȯÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ½±°Ô AutoHotkey v2·Î ÀÌÀüÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÅäÇÖÅ° v2¿¡¼ %this%()
ÀÇ ÇàÀ§¿Í ¸Þ½îµå È£ÃâÀº Á÷Á¢ÀûÀ¸·Î Call ¸Þ½îµå¸¦ È£ÃâÇϵµ·Ï º¯°æµÇ¾ú½À´Ï´Ù.
ÇÔ¼öó·³ ÇàÀ§ÇÕ´Ï´Ù. ±×·¯³ª ±×Àú ¹Ì¸® Á¤ÀÇµÈ ¸Å°³º¯¼ö¸¦ ´Ù¸¥ ÇÔ¼ö·Î °Ç³×´Â ¿ªÇÒ¸¸ ÇÕ´Ï´Ù.
µÎ °¡Áö ¹æ¹ýÀ¸·Î BoundFunc °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:
BoundFunc °´Ã¼´Â ¾Æ·¡ ¿¹Á¦¿¡ º¸¿©ÁÖ´Â ¹Ù¿Í °°ÀÌ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸Þ½îµå´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. BoundFunc°¡ È£ÃâµÉ ¶§, ±×¿¡ ¹ÀÎ ÇÔ¼ö³ª ¸Þ½îµå¸¦ È£ÃâÇϸé¼, ¹ÀÎ ¸Å°³º¯¼ö¿Í ±×¸®°í È£ÃâÀÚ°¡ °Ç³Ù °ÍÀ» ¸ðµÎ °Ç³Ü´Ï´Ù. ¿¹¸¦ µé¾î:
fn := Func("RealFn").Bind(1) %fn%(2) ; Shows "1, 2" fn.Call(3) ; Shows "1, 3" RealFn(a, b) { MsgBox %a%, %b% }
ObjBindMethod()¸¦ »ç¿ëÇÏ¸é ¸Þ½îµå ÀÚü¸¦ °¡¸®Å°´Â ÂüÁ¶ ÁÖ¼Ò¸¦ ¿¶÷ÇÒ ¼ö ¾øÀ» ¶§ ¸Þ½îµå¿¡ ¹À» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î:
file := FileOpen(A_ScriptFullPath, "r") getLine := ObjBindMethod(file, "ReadLine") MsgBox % %getLine%() ; ÀÌ ÆÄÀÏÀÇ Ã¹ ÁÙÀ» º¸¿©ÁÝ´Ï´Ù.