Ruby - Biến, Hằng và Chữ
Các biến là vị trí bộ nhớ, chứa bất kỳ dữ liệu nào được sử dụng bởi bất kỳ chương trình nào.
Có năm loại biến được hỗ trợ bởi Ruby. Bạn cũng đã xem qua một mô tả nhỏ về các biến này trong chương trước. Năm loại biến này được giải thích trong chương này.
Biến toàn cầu của Ruby
Các biến toàn cục bắt đầu bằng $. Các biến toàn cục chưa được khởi tạo có giá trị nil và tạo ra cảnh báo với tùy chọn -w.
Việc gán cho các biến toàn cục sẽ thay đổi trạng thái toàn cục. Không nên sử dụng các biến toàn cục. Họ làm cho các chương trình trở nên khó hiểu.
Đây là một ví dụ cho thấy việc sử dụng biến toàn cục.
#!/usr/bin/ruby
$global_variable = 10
class Class1
def print_global
puts "Global variable in Class1 is #$global_variable"
end
end
class Class2
def print_global
puts "Global variable in Class2 is #$global_variable"
end
end
class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global
Ở đây $ global_variable là một biến toàn cục. Điều này sẽ tạo ra kết quả sau:
NOTE - Trong Ruby, bạn CÓ THỂ truy cập giá trị của bất kỳ biến hoặc hằng nào bằng cách đặt một ký tự băm (#) ngay trước biến hoặc hằng đó.
Global variable in Class1 is 10
Global variable in Class2 is 10
Biến phiên bản Ruby
Các biến phiên bản bắt đầu bằng @. Các biến phiên bản chưa được khởi tạo có giá trị nil và tạo ra các cảnh báo với tùy chọn -w.
Dưới đây là một ví dụ cho thấy việc sử dụng Biến phiên bản.
#!/usr/bin/ruby
class Customer
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
end
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.display_details()
cust2.display_details()
Ở đây, @cust_id, @cust_name và @cust_addr là các biến cá thể. Điều này sẽ tạo ra kết quả sau:
Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala
Biến lớp Ruby
Các biến lớp bắt đầu bằng @@ và phải được khởi tạo trước khi chúng có thể được sử dụng trong các định nghĩa phương thức.
Tham chiếu đến một biến lớp chưa được khởi tạo sẽ tạo ra lỗi. Các biến lớp được chia sẻ giữa các con của lớp hoặc mô-đun trong đó các biến lớp được định nghĩa.
Ghi đè các biến lớp tạo ra cảnh báo với tùy chọn -w.
Đây là một ví dụ cho thấy việc sử dụng biến lớp:
#!/usr/bin/ruby
class Customer
@@no_of_customers = 0
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
def total_no_of_customers()
@@no_of_customers += 1
puts "Total number of customers: #@@no_of_customers"
end
end
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.total_no_of_customers()
cust2.total_no_of_customers()
Ở đây @@ no_of_customers là một biến lớp. Điều này sẽ tạo ra kết quả sau:
Total number of customers: 1
Total number of customers: 2
Biến cục bộ Ruby
Các biến cục bộ bắt đầu bằng ký tự thường hoặc _. Phạm vi của một biến cục bộ nằm trong khoảng từ lớp, mô-đun, def hoặc do đến phần cuối tương ứng hoặc từ dấu ngoặc nhọn mở của một khối đến dấu ngoặc nhọn {}.
Khi một biến cục bộ chưa được khởi tạo được tham chiếu, nó được hiểu là một lệnh gọi đến một phương thức không có đối số.
Việc gán cho các biến cục bộ chưa được khởi tạo cũng dùng như một khai báo biến. Các biến bắt đầu tồn tại cho đến khi đạt đến cuối phạm vi hiện tại. Thời gian tồn tại của các biến cục bộ được xác định khi Ruby phân tích chương trình.
Trong ví dụ trên, các biến cục bộ là id, name và addr.
Hằng số Ruby
Các hằng số bắt đầu bằng một chữ cái viết hoa. Các hằng số được xác định trong một lớp hoặc mô-đun có thể được truy cập từ bên trong lớp hoặc mô-đun đó và những hằng số được xác định bên ngoài một lớp hoặc mô-đun có thể được truy cập trên toàn cầu.
Hằng số có thể không được xác định trong các phương thức. Tham chiếu đến một hằng số chưa được khởi tạo sẽ tạo ra lỗi. Việc gán một hằng số đã được khởi tạo sẽ tạo ra một cảnh báo.
#!/usr/bin/ruby
class Example
VAR1 = 100
VAR2 = 200
def show
puts "Value of first Constant is #{VAR1}"
puts "Value of second Constant is #{VAR2}"
end
end
# Create Objects
object = Example.new()
object.show
Ở đây VAR1 và VAR2 là các hằng số. Điều này sẽ tạo ra kết quả sau:
Value of first Constant is 100
Value of second Constant is 200
Biến giả của Ruby
Chúng là những biến đặc biệt có sự xuất hiện của biến cục bộ nhưng hoạt động giống như hằng số. Bạn không thể gán bất kỳ giá trị nào cho các biến này.
self - Đối tượng nhận của phương thức hiện tại.
true - Giá trị đại diện cho sự thật.
false - Giá trị biểu thị sai.
nil - Giá trị đại diện cho không xác định.
__FILE__ - Tên của tệp nguồn hiện tại.
__LINE__ - Số dòng hiện tại trong tệp nguồn.
Ruby Basic Literals
Các quy tắc Ruby sử dụng cho các chữ rất đơn giản và trực quan. Phần này giải thích tất cả các Ruby Literal cơ bản.
Số nguyên
Ruby hỗ trợ số nguyên. Một số nguyên có thể nằm trong khoảng từ -2 30 đến 2 30-1 hoặc -2 62 đến 2 62-1 . Các số nguyên trong phạm vi này là các đối tượng của lớp Fixnum và các số nguyên bên ngoài phạm vi này được lưu trữ trong các đối tượng của lớp Bignum .
Bạn viết số nguyên bằng cách sử dụng dấu đầu tùy chọn, chỉ báo cơ sở tùy chọn (0 đối với bát phân, 0x đối với hex hoặc 0b đối với nhị phân), theo sau là một chuỗi chữ số trong cơ số thích hợp. Các ký tự gạch dưới được bỏ qua trong chuỗi chữ số.
Bạn cũng có thể nhận giá trị số nguyên, tương ứng với một ký tự ASCII hoặc thoát khỏi chuỗi bằng cách đặt trước nó bằng dấu chấm hỏi.
Thí dụ
123 # Fixnum decimal
1_234 # Fixnum decimal with underline
-500 # Negative Fixnum
0377 # octal
0xff # hexadecimal
0b1011 # binary
?a # character code for 'a'
?\n # code for a newline (0x0a)
12345678901234567890 # Bignum
NOTE - Lớp và Đối tượng được giải thích trong một chương riêng của hướng dẫn này.
Số nổi
Ruby hỗ trợ số nổi. Chúng cũng là số nhưng với số thập phân. Số dấu phẩy động là đối tượng của lớp Float và có thể là bất kỳ đối tượng nào sau đây:
Thí dụ
123.4 # floating point value
1.0e6 # scientific notation
4E20 # dot not required
4e+20 # sign before exponential
Chuỗi chữ
Chuỗi Ruby chỉ đơn giản là chuỗi byte 8 bit và chúng là các đối tượng của chuỗi lớp. Các chuỗi được trích dẫn kép cho phép thay thế và ký hiệu dấu gạch chéo ngược nhưng các chuỗi được trích dẫn đơn không cho phép thay thế và chỉ cho phép ký hiệu dấu gạch chéo ngược đối với \\ và \ '
Thí dụ
#!/usr/bin/ruby -w
puts 'escape using "\\"';
puts 'That\'s right';
Điều này sẽ tạo ra kết quả sau:
escape using "\"
That's right
Bạn có thể thay thế giá trị của bất kỳ biểu thức Ruby nào thành một chuỗi bằng cách sử dụng chuỗi #{ expr }. Ở đây, expr có thể là bất kỳ biểu thức ruby nào.
#!/usr/bin/ruby -w
puts "Multiplication Value : #{24*60*60}";
Điều này sẽ tạo ra kết quả sau:
Multiplication Value : 86400
Ký hiệu gạch chéo ngược
Sau đây là danh sách các ký hiệu Backslash được hỗ trợ bởi Ruby:
Ký hiệu | Ký tự đại diện |
---|---|
\ n | Dòng mới (0x0a) |
\ r | Vận chuyển trở lại (0x0d) |
\ f | Nguồn cấp dữ liệu định dạng (0x0c) |
\ b | Backspace (0x08) |
\ a | Chuông (0x07) |
\ e | Thoát (0x1b) |
\S | Không gian (0x20) |
\ nnn | Ký hiệu bát phân (n là 0-7) |
\ xnn | Ký hiệu thập lục phân (n là 0-9, af hoặc AF) |
\ cx, \ Cx | Control-x |
\ Mx | Meta-x (c | 0x80) |
\ M- \ Cx | Meta-Control-x |
\ x | Nhân vật x |
Để biết thêm chi tiết về Chuỗi Ruby, hãy xem qua Chuỗi Ruby .
Mảng Ruby
Chữ viết của Ruby Array được tạo bằng cách đặt một loạt các tham chiếu đối tượng được phân tách bằng dấu phẩy giữa các dấu ngoặc vuông. Dấu phẩy ở cuối bị bỏ qua.
Thí dụ
#!/usr/bin/ruby
ary = [ "fred", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|
puts i
end
Điều này sẽ tạo ra kết quả sau:
fred
10
3.14
This is a string
last element
Để biết thêm chi tiết về Mảng Ruby, hãy xem Mảng Ruby .
Ruby Hashes
Một Ruby Hash theo nghĩa đen được tạo bằng cách đặt một danh sách các cặp khóa / giá trị giữa các dấu ngoặc nhọn, với dấu phẩy hoặc chuỗi => giữa khóa và giá trị. Dấu phẩy ở cuối bị bỏ qua.
Thí dụ
#!/usr/bin/ruby
hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
print key, " is ", value, "\n"
end
Điều này sẽ tạo ra kết quả sau:
red is 3840
green is 240
blue is 15
Để biết thêm chi tiết về Ruby Hashes, hãy xem qua Ruby Hashes .
Dãy Ruby
Phạm vi đại diện cho một khoảng là một tập hợp các giá trị có bắt đầu và kết thúc. Phạm vi có thể được xây dựng bằng cách sử dụng các ký tự s..e và s ... e hoặc với Range.new.
Phạm vi được xây dựng bằng cách sử dụng .. chạy từ đầu đến cuối hoàn toàn. Những người được tạo bằng cách sử dụng ... loại trừ giá trị cuối cùng. Khi được sử dụng như một trình lặp, các dải ô trả về từng giá trị trong chuỗi.
Phạm vi (1..5) có nghĩa là nó bao gồm 1, 2, 3, 4, 5 giá trị và phạm vi (1 ... 5) có nghĩa là nó bao gồm 1, 2, 3, 4 giá trị.
Thí dụ
#!/usr/bin/ruby
(10..15).each do |n|
print n, ' '
end
Điều này sẽ tạo ra kết quả sau:
10 11 12 13 14 15
Để biết thêm chi tiết về Ruby Ranges, hãy xem qua Ruby Ranges .