Biến và Gán
Biến cục bộ được đặt tên theo quy tắc thông thường như sau: chúng phải có kí tự đầu là chữ cái viết thường hoặc dấu gạch dưới ( _ ), và phải gồm các kí tự, chữ số và dấu gạch dưới. Khi Ruby bắt gặp 1 từ như vậy, nó sẽ hiểu từ đó theo 1 trong 3 cách: biến cục bộ, lệnh gọi phương thức hoặc từ khóa.
Từ khóa (trong Ruby có khoảng 38 từ khóa) là những từ đặc biệt được dành riêng cho một chức năng nào đó, và bạn không thể dùng tên biến trùng với một từ khóa nào được. def là một từ khóa, chức năng duy nhất là đánh dấu lệnh khai báo phương thức. if cũng là một từ khóa, rất nhiều đoạn mã Ruby chứa các cấu trúc xét điều kiện mà bắt đầu bằng if, do đó sẽ rất là rối rắm nếu được phép dùng if làm tên biến.
Lệnh gọi phương thức cũng có thể được đặt tên theo quy tắc đặt tên biến cục bộ như đã nêu ở trên, ví dụ như start_here. puts là một lệnh gọi phương thức, print cũng vậy. Sau đây là cách Ruby xác định xem một cái tên mà nó gặp trong một đoạn mã là biến cục bộ, phương thức hay từ khóa:
- Nếu có dấu = ở bên cạnh từ đó, chứng tỏ từ đó là một biến cục bộ đang được gán giá trị.
- Nếu từ đó nằm trong danh sách từ khóa, chứng tỏ nó có chức năng của một từ khóa.
- Ngoài những dấu hiệu trên thì đó là lệnh gọi phương thức
Chú thích của người dịch: Bạn có thể thắc mắc tại sao nếu một từ được tiếp nối bởi + - * hay / thì lại không phải là tên biến? Ví dụ x * 2? Đơn giản là vì trong Ruby, * cũng là một phương thức toán tử, chứ không đơn giản chỉ là một toán tử.
Để lưu giá trị của một số hay một chuỗi vào bộ nhớ máy tính để sử dụng trong chương trình, bạn cần cho chuỗi hay số đó một cái tên. Các lập trình viên thường nói đến việc đặt tên cho giá trị là “gán”, còn những cái tên được “gán” cho giá trị là “biến”. Một biến sẽ lập tức được sinh ra khi trình dịch bắt gặp một câu lệnh gán cho biến đó.
s = ‘Hello World!’ x = 10
Đoạn chương trình p004stringusage.rb sau sẽ cho ta thấy một số cách xử lý chuỗi khác:
# p004stringusage.rb # Defining a constant PI = 3.1416 puts PI # Defining a local variable myString = 'I love my city, Pune' puts myString =begin Conversions .toi_i, .to_f, .to_s =end var1 = 5 var2 = '2' puts var1 + var2.to_i # << appending to a string a = 'hello' a<<'world. I love this world...' puts a =begin << marks the start of the string literal and is followed by a delimiter of your choice. The string literal then starts from the next new line and finishes when the delimiter is repeated again on its own. =end a = <<END_STR This is the string And a second line END_STR puts a
Trong ví dụ trên:
x = “100”.to_i
dấu chấm (.) nghĩa là thông điệp “to_i) được gửi đến chuỗi “100”|, hay nói cách khác phương thức to_i được gọi và tác động lên chuỗi “100”. Chuỗi “100” được gọi là đối tượng nhận của thông điệp. Do đó khi bạn nhìn thấy dấu chấm ở vị trí mà không còn cách giải thích nào khác, bạn nên ngầm hiểu vế bên phải của dấu chấm là “thông điệp”, còn vế bên trái là đối tượng.
