AutoIT tut 14 : TRUYỀN DỮ KIỆN CHO HÀM

0
(0)

TRUYỀN DỮ KIỆN CHO HÀM

Đầu tiên ta có vài khái niệm cần nhắc lại :

v      Tham biến  :  là các biến cục bộ, đại diện cho chương trình con để tiếp nhận dữ kiện

v      Đối số  :  thực chất là các dữ-kiện-cụ-thể mà ta truyền cho tham biến của hàm. Tuy nhiên, các dữ kiện ta truyền cho tham biến không phải lúc nào cũng là một giá trị cụ thể. Thông thường nó là một biến bên ngoài. Biến bên ngoài này cũng chính là đối số của hàm.

Nói chung, để truyền dữ kiện cho chương trình con ta có hai cách.

–  Cách thứ nhất là “truyền bằng trị”, phương pháp này sao chép giá trị của một đối số vào tham biến, và các thao tác trên tham biến không làm ảnh hưởng đến đối số. Ví dụ :

Hi("Mary")

$nick = "Lovely Cat"

Hi($nick)

 

Func Hi($name)

      $greeting = "Hello, "& $name& ". Have a nice day!"

      MsgBox(0,"Hi", $greeting)

EndFunc

–  Cách thứ hai là “truyền bằng tham chiếu”, tức là dùng tham biến để thao tác trực tiếp trên đối số được truyền vào. Mọi thay đổi trên tham biến đều ảnh hưởng đến đối số. Để làm được đều này ta sử dụng từ khóa ByRef

BYREF

Như đã nói ở trên, khi muốn tham biến liên kết với đối số truyền vào, ta đặt ByRef vào trước tham biến lúc khai báo.

Ví dụ, đoạn mã này thực hiện việc tráo đổi giá trị giữa hai biến $var1 và $var2 :

$var1 = 100

$var2 = 50

MsgBox(0,"Orginal", "Orginal value : $var1 = " & $var1 & ",  $var2 = " & $var2)

_Swap($var1, $var2)

MsgBox(0,"Modified", "Modified value : $var1 = " & $var1 & ",  $var2 = " & $var2)

 

Func _Swap(ByRef $a, ByRef $b)

      $temp = $a

      $a = $b

      $b = $temp

EndFunc

 

Ban đầu ta truyền vào hàm _Swap hai đối số là $var1 và $var2. Do hai tham số $a, $b có sử dụng ByRef nên khi ta tráo đổi giá trị giữa $a và $b thì cũng làm cho giá trị của $var1 và $var2 tráo đổi theo.

CONST

Bạn từng biết rằng, Const là từ khóa dùng để khai báo hằng số. Thì khi sử dụng trong hàm cũng vậy, việc đặt Const phía trước tham biến, sẽ làm cho giá trị của tham biến không thể thay đổi trong suốt quá trình thực thi hàm. Giá trị này được truyền chỉ một lần từ phía đối số.

DEFAULT

Từ khóa này không được dùng trong các biểu thức tính toán. Nó được dùng như một cờ thông báo rằng sẽ sử dụng giá trị mặc định của tham biến đó bên trong hàm. Các tham số sử dụng giá trị mặc định và các tham số sử dụng giá trị bắt buộc có thể được khai báo xen kẽ nhau, không cần phải theo trật tự. (xem thêm chú ý số 3 bên dưới)

Ví dụ :


WinMove("[active]","",default, default, 200,300)      ; just resize the active window (no move)

MyFunc2(Default,Default)

 

Func MyFunc2($Param1 = Default, $Param2 = 'Two', $Param3 = Default)

    If $Param1 = Default Then $Param1 = 'One'

    If $Param3 = Default Then $Param3 = 'Three'

 

    MsgBox(0, 'Params', '1 = ' & $Param1 & @LF & _

        '2 = ' & $Param2 & @LF & _

        '3 = ' & $Param3)

EndFunc

 

CÁC CHÚ Ý

Ø       Việc sử dụng cách truyền bằng trị, bằng tham chiếu hay tất cả những gì được nêu trong phần này thì tùy vào trường hợp mà ta dùng. Không nhất thiết là phải viết hết khi định nghĩa một hàm

Ø       Để truyền một mảng vào hàm, thì ta chỉ cần nêu ra tên của mảng đó, không cần dùng cặp dấu ngoặc vuông.  Khi xử lý, nếu bạn xác định chiều dài của mảng được truyền vào, ta cần gọi hàm UBound.

Ø       Lúc khai báo tham biến, bạn có thể gán cho tham biến những giá trị mặc định. Trong quá trình gọi hàm, nếu người dùng không truyền dữ kiện cho tham biến đó thì giá trị mặc định sẽ được dùng. Có một lưu ý quan trọng là các tham biến có dùng giá trị mặc định, thì tất cả phải được đặt ở phía sau các tham biến không dùng giá trị mặc định. Ngoài ra còn có cách dùng từ khóa Default như đã nêu ở trên.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Related posts

AutoIT tut 27: 1 số ví dụ về chương trình AutoIT

AutoIT tut 32 : GUISet ( Tổng hợp )

AutoIT tut 28: UICtrlSetBkColor -Thay đổi màu nền hiện tại của control sang một màu khác