Yuto Blog

Yuto Blog

Japan, Code and Photo
Phạm vi của biến và hằng trong Ruby
Phạm vi của biến và hằng trong Ruby
Updated by Yuto Yasunaga at 2021/06/04 09:59

Bảng dưới đây mô tả về quy tắc đặt tên và phạm vi sử dụng của biến (variable) và hằng (constant) trong ngôn ngữ lập trình Ruby.

Trong Ruby có những loại biến số:
- Local variable
- Global variable
- Class variable
- Instance variable

Loại biến số được xác định dựa vào cách đặt tên. Tùy thuộc vào từng loại biến mà phạm vi sử dụng và kết quả trả về khi tham chiếu biến chưa được khai báo sẽ khác nhau.

Quy tắc đặt tên biến và hằng

Loại biến và hằng Quy tắc đặt tên Phạm vi sử dụng Kết quả khi tham chiếu biến / hằng chưa được khai báo
Local variable Ký tự bắt đầu là chữ cái thường hoặc dấu _, các kỹ tự còn lại là chữ cái hoặc dấu _ Trong block hoặc method được định nghĩa Khi biến được khai báo trước nhưng chưa được gán gì thì sẽ trả về nil. Nếu biến chưa được khai báo thì sẽ sinh exception
Global variable Ký tự bắt đầu là $, các ký tự còn lại là chữ cái hoặc dấu _ Có thể được gọi từ bất cứ đâu nil
Class variable Ký tự bắt đầu là @@, các ký tự còn lại là chữ cái hoặc dấu _ Tất cả instance của class đó Sinh exception
Instance variable Ký tự bắt đầu là @, các ký tự còn lại là chữ cái hoặc dấu _ Bên trong instance đó nil
Constant Ký tự bắt đầu là chữ cái hoa, các ký tự còn lại là chữ cái hoặc dấu _ Bên trong class / module đó, bên trong class / module được định nghĩa từ class / module ban đầu, bên trong module kế thừa hoặc include của class / module ban đầu. Bên ngoài cũng có thể tham chiếu được nếu thêm tiền tố là tên class / module Sinh exception

Ví dụ về Local variable (biến cục bộ)

foo = 1

def bar
  foo # Bởi vì từ bên trong method không thể gọi local variable bên ngoài, do đó sẽ được xem là đang gọi method foo
end

bar # => Sinh exception NameError, bởi vì local variable foo chưa được khai báo trong method bar
baz # => Sinh exception NameError, bởi vì chưa có khai báo local variable baz

Ví dụ về Global variable (biến toàn cục)

$foo = 1

def bar
  $foo # Gọi global variable $foo ở bên ngoài method
end

bar # => 1, $foo của method bar chính là $foo ở bên ngoài method
baz # => nil, bởi vì global variable chưa được định nghĩa sẽ trả về nil

Ưu điểm của Global variable: Có thể được gọi ở bất cứ đâu, nếu chưa được khai báo thì sẽ trả về nil
Nhược điểm của Global variable: Có thể được thay đổi giá trị ở bất cứ đâu, do đó nếu không có lý do gì đặc biệt thì nên sử dụng Local variable.


Back