ÇÔ¼ö °´Ã¼

"ÇÔ¼ö °´Ã¼"´Â º¸Åë ´ÙÀ½À» ¶æÇÕ´Ï´Ù:

ÇÔ¼ö °´Ã¼´Â ´ÙÀ½°ú ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

»ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö

»ç¿ëÀÚ-Á¤ÀÇ ÇÔ¼ö °´Ã¼´Â ´ÙÀ½ ÀÏ¹Ý ÆÐÅÏÀ» µû¶ó¾ß ÇÕ´Ï´Ù:

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*)
    }
    ;...
}

Á¤È®ÇÏ°Ô ¾î´À ºÎºÐÀÌ ÇÊ¿äÇÑÁö´Â »ç¿ë¹ý¿¡ µû¶ó ´Ù¸¨´Ï´Ù:

__CallÀ¸·Î Á÷Á¢ °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, __CallÀ» Call·Î ¹æÇâÀüȯÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ½±°Ô AutoHotkey v2·Î ÀÌÀüÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÅäÇÖÅ° v2¿¡¼­ %this%()ÀÇ ÇàÀ§¿Í ¸Þ½îµå È£ÃâÀº Á÷Á¢ÀûÀ¸·Î Call ¸Þ½îµå¸¦ È£ÃâÇϵµ·Ï º¯°æµÇ¾ú½À´Ï´Ù.

BoundFunc Object [v1.1.20+]

ÇÔ¼öó·³ ÇàÀ§ÇÕ´Ï´Ù. ±×·¯³ª ±×Àú ¹Ì¸® Á¤ÀÇµÈ ¸Å°³º¯¼ö¸¦ ´Ù¸¥ ÇÔ¼ö·Î °Ç³×´Â ¿ªÇÒ¸¸ ÇÕ´Ï´Ù.

µÎ °¡Áö ¹æ¹ýÀ¸·Î 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%()  ; ÀÌ ÆÄÀÏÀÇ Ã¹ ÁÙÀ» º¸¿©ÁÝ´Ï´Ù.