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 .