[JX] Ai chưa bit lua thì cùng học nào! - Trang 3
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 3 của 5 Đầu tiênĐầu tiên 1 2 3 4 5 CuốiCuối
Kết quả 21 đến 30 của 41
  1. #21
    Thành Viên
    Ngày tham gia
    Jul 2008
    Bài viết
    211
    Thanks
    0
    Thanked 86 Times in 12 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Tui đã thử coi lại Lua 4.0 rùi ở [Only registered and activated users can see links. ] hàm này có cả trong Lua 4.0 và Lua 5.0 không thay đổi ji trong phần này. Xem thử nha tuyền^^
    Nếu không được thì thử bỏ phần io. đi chỉ xài stdin:read thử xem vì io. là dạng gọi hàm cụ thể (explicit) xác định rõ nhóm io còn cách kia là ko cần io. là dạng hiểu ngầm (implicit)
    Lần sửa cuối bởi huongphieubat, ngày 21-09-08 lúc 06:25 PM.
    Khách viếng thăm hãy cùng huongphieubat xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. Các thành viên gởi lời cảm ơn đến huongphieubat vì bài viết này !

    toidachet2000 (17-07-11)

  3. #22
    Thành Viên
    Ngày tham gia
    Jul 2008
    Bài viết
    211
    Thanks
    0
    Thanked 86 Times in 12 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Phạm vi

    Phạm vi biến (Variable scopes)

    Các chương trình được hòa nhập vào các đơn vị code, như các hàm và các modules. Trong các đơn vị này chúng ta có thể tạo ra các biến để giữ các giá trị nhằm mục đích xử lý dữ liệu và làm chương trình thực hiện 1 nhiệm vụ định sẵn. Vì 1 số nguyên nhân, chúng ta có thể muốn ẩn các biến trong 1 đơn vị với những cái khác. Chúng ta cũng có thể tạo các biến tạm thời là các biến có thể bỏ đi khi chúng ta đã xong việc với chúng. Thuật ngữ “phạm vi” là mô tả vùng mà tập hợp các biến tồn tại trong đó.

    Các biến mà chúng ta truy cập được gọi là thấy được (visible). Phạm vi của 1 biến là khối mã chứa trong vùng thấy được. Các phạm vi được tạo ra khi chương trình thực hiện và phá hủy khi chương trình đi vào và ra khỏi các khối. Các biến được chứa trong các khối này được tạo ra và phá hủy theo các quy tắc được mô tả sau đây. Khi chúng ta nhập 1 khối và 1 phạm vi mới là chúng ta đang nhập vào 1 phạm vi nội (inner scope). Phạm vi ngoại (Outer scopes) là thấy được từ phạm vi nội (không có chiều ngược lại).

    Trong Lua, các khối code được chỉ rõ qua các các từ khóa function và do...end. Ví dụ,

    > function foo() local x=1 end
    > foo()
    > do local y=1 end

    Ví dụ trên chỉ xác định 1 hàm được gọi là foo có chứa 1 phạm vi. Chúng ta tạo ra biến x trong phạm vi hàm. Khi chúng ta thoát hàm, phạm vi kết thúc, biến x bị xóa và không còn thấy được nữa. Khối do… end chứa chức năng như thế.

    Phạm vi toàn cục (Global scope)

    Bất kỳ biến nào không nằm trong 1 khối xác định được xem như nằm trong phạm vi toàn cục. Mọi thứ trong phạm vi toàn cục đều có thể truy cập được bởi các phạm vi nội (inner scopes)

    > g = "global"
    > print(g)global
    > function foo() print(g) end
    > foo()
    global

    Trong ví dụ trên, g đang trong phạm vi toàn cục. Hàm foo cũng trong phạm vi toàn cục. Chúng ta nhập phạm vi hàm foo khi foo() được gọi. Chúng ta có thể in giá trị của g vì chúng ta có thể thấy phạm vi ngoại từ phạm vi nội foo.

    Từ khóa local (The local keyword)

    Chúng ta sử dụng từ khóa local để mô tả mọi biến mà chúng ta muốn giữ phạm vi cục bộ làm phạm vi xác định các biến đó.

    Chú ý: Tất cả các biến được khai báo trong Lua mặc định là phạm vi toàn cục nếu không được chỉ rõ là cục bộ. Nó không giống như các cách ta thường dùng. Ví dụ trong C và nhiếu ngôn ngũ khác, các biến được xác định trong phạm vi nội được mặc định là phạm vi nội.

    > a = 1 -- phạm vi toàn cục
    > function foo() -- Bắt đầu của phạm vi foo
    >> b = 2 -- không có từ khóa local nên là phạm vi toàn cục
    >> local c = 3 -- phạm vi cục bộ (local scope)
    >> end -- kết thúc phạm vi foo
    > print(a,b,c) -- trước khi gọi foo
    1 nil nil
    > foo()
    > print(a,b,c) -- sau khi foo được gọi
    1 2 nil

    Phạm vi cục bộ (Local scope)

    Khi chúng ta tạo ra 1 khối là chúng ta đang tạo ra 1 phạm vi tồn tại cho các biến, ví dụ.

    > do local seven = 7 print(seven) end
    7
    > print(seven)
    nil

    Trong ví dụ trên, do và end đã bao 1 khối chứa khai báo biến cục bộ seven. Khi chúng ta thoát phạm vi tại từ khóa end., chúng ta không còn thấy được các biến cục bộ trong pham vi. Khi xuất giá trị của seven bên ngoài phạm vi chúng ta nhận được nil. Điều này có nghĩa là “không tìm thấy biến” (variable not found). Từ khóa local được đặt trước bất cứ biến nào mà chúng ta muốn chỉ nhìn thấy trong phạm vi đó và phạm vi nội tại của nó.

    Trong ví dụ dưới đây, x bắt đầu với giá trị 1. Chúng ta tạo ra 1 khối qua từ khóa do và end. Sử dụng từ khá local để chỉ rõ rằng chúng ta muốn 1 biến mới cũng gọi là x, chỉ được nhìn thấy trong khối hoặc phạm vi này.

    > x = 1
    > print(x)
    1
    > do
    >> local x
    >> x = 2
    >> print(x)
    >> end
    2
    > print(x)
    1

    Bạn có thể thấy rằng mỗi khi phạm vi do … end kết thúc, khai báo thứ 2 của x biến mất và chúng ta trả ngược lại cái cũ.

    Local trong phạm vi toàn cục (local in the global scope)

    Từ khóa local có thể được sử dụng trong bất cứ phạm vi nào không chỉ trong phạm vi nội và phạm vi hàm. Thậm chí phạm vi toàn cục cũng có thể trở thành 1 phạm vi nội nếu nó được sử dụng như 1 module.

    Bất cứ nơi nào có thể, hãy sử dụng biến cục bộ vì nó sẽ hiệu quả hơn. Nguyên nhân là các biến cục bộ được tham chiếu qua 1 số được gán trong khi các biến toàn cục được lưu trữ trong 1 bảng được truy cập thông qua khóa (tên biến). Tìm kiếm trong bảng được thực hiện rất nhanh trong Lua nhưng vẫn không nhanh bằng tìm kiếm đăng ký cục bộ.

    Nếu đoạn code sau được biên dịch, chúng ta có thể xem Lua virtual machine instructions được xuất ra.

    g = "global"
    local l = "local"
    print(g,l)

    Công cụ lệnh luac (Lua compiler) có thể được sử dụng để biên dịch code, cho ra:

    main <1.lua:0,0> (8 instructions, 32 bytes at 0x671420)
    0+ params, 4 slots, 0 upvalues, 1 local, 4 constants, 0 functions
    1 [1] LOADK 0 -2 ; "global"
    2 [1] SETGLOBAL 0 -1 ; g
    3 [2] LOADK 0 -3 ; "local"
    4 [3] GETGLOBAL 1 -4 ; print
    5 [3] GETGLOBAL 2 -1 ; g
    6 [3] MOVE 3 0
    7 [3] CALL 1 3 1
    8 [3] RETURN 0 1

    Còn tiếp ...
    Khách viếng thăm hãy cùng huongphieubat xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. Các thành viên gởi lời cảm ơn đến huongphieubat vì bài viết này !

    toidachet2000 (17-07-11)

  5. #23
    Thành Viên
    Ngày tham gia
    Jul 2008
    Bài viết
    211
    Thanks
    0
    Thanked 86 Times in 12 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Học tiếp nà ...
    [Only registered and activated users can see links. ]
    Còn tiếp ...
    Khách viếng thăm hãy cùng huongphieubat xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #24
    Thành Viên
    Ngày tham gia
    Mar 2009
    Bài viết
    93
    Thanks
    46
    Thanked 12 Times in 7 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Còn sao không pót tiếp đi bạn, hay là bạn lập thành 1 ebook share cho ae đi nhé, luôn tiện làm của hồi môn lun hj
    Khách viếng thăm hãy cùng lecongphu xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #25
    Thành Viên Tâm Huyết giangleloi's Avatar
    Ngày tham gia
    Mar 2008
    Đang ở
    Lâm Đồng
    Bài viết
    1,877
    Thanks
    38
    Thanked 394 Times in 136 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    sau 2 tháng học của chú:\ hiểu dc sơ sơ
    Khách viếng thăm hãy cùng giangleloi xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #26
    Thành Viên
    Ngày tham gia
    May 2009
    Bài viết
    417
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    hjc đọc xong chả hiểu ji hết trơn
    Khách viếng thăm hãy cùng nhoc1994 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #27
    Thành Viên
    Ngày tham gia
    Aug 2009
    Bài viết
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Giá mà học xong cái nào cũng áp dụng liền cái đó thì hay nhỉ.Đọc qua mà không xài nó thì cũng như không.Nếu học xong được 1 hàm nào đó và sử dụng nó ngay vào dev JX offline thì chẳng có ai quên đâu nhỉ.
    Khách viếng thăm hãy cùng michaelanhvu xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #28
    Super Moderator thaihoa91's Avatar
    Ngày tham gia
    Apr 2008
    Bài viết
    12,110
    Thanks
    662
    Thanked 3,167 Times in 1,602 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    Đây là bài học LUA rộng ! Dựa vào các bài học của huongphieubat post thì có thể viết các Script phức tạp !

    Còn trong mấy Ebook chỉ là cách viết cơ bản mà thui !

    Cách viết phức tạp này đã dc vận dụng trong Server DNTmaster tức là Server Sóng gió trung nguyên (sgtn.cu.to) đã dc đem lên Online ! Server này áp dụng Script để làm droprate (tỷ lệ rơi tiền và Item) bằng hàm thông qua Script chứ ko đơn giản là dùng file NpcS.txt và các droprate.ini để chỉnh ko đâu !
    Khách viếng thăm hãy cùng thaihoa91 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #29
    Thành Viên
    Ngày tham gia
    Nov 2009
    Bài viết
    28
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Ðề: Ai chưa bit lua thì cùng học nào!

    sao tôi học C++ với Java đều thấy hàm nó đơn giản hơn trong Lua vậy ! Chưa thử viết lua phát nào nhưng đọc hướng dẫn hàm cũng loạn! tên hàm dài ngoằng ko quen ^^!
    Khách viếng thăm hãy cùng aichangbiet xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #30
    Thành Viên
    Ngày tham gia
    Dec 2009
    Bài viết
    14
    Thanks
    0
    Thanked 1 Time in 1 Post

    Ðề: Ai chưa bit lua thì cùng học nào!

    Mình ghiền lập trình từ những năm 8x,từ đó đến nay k có thời gian và điều kiện tìm hiểu, giờ đọc được bài của pác về LUA,mình thấy rất hay và hữu ích,thanks pác 1 phát.
    Những thứ này ai đã từng học qua pascal hay C thì sẽ nhanh chóng nắm bắt thui mà,phải không các pác?
    Khách viếng thăm hãy cùng cuongnc2001 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 3 của 5 Đầu tiênĐầu tiên 1 2 3 4 5 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 08:32 PM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.