12/08/2018, 15:18

The Nil Class in Ruby

Nil là một trong ba đặc điểm nguyên thủy chính của Ruby cùng với true và false. Nil trong từ điển Ruby là đại diện cho nothingness. Cho rằng Ruby đòi hỏi tất cả các phương pháp để sinh ra một cái gì đó, nó sau đó phải có một loại dữ liệu cơ bản để đại diện cho trạng thái của không có cái gì. Có ...

Nil là một trong ba đặc điểm nguyên thủy chính của Ruby cùng với true và false. Nil trong từ điển Ruby là đại diện cho nothingness. Cho rằng Ruby đòi hỏi tất cả các phương pháp để sinh ra một cái gì đó, nó sau đó phải có một loại dữ liệu cơ bản để đại diện cho trạng thái của không có cái gì. Có vẻ như có một cái gì đó cởi mở, nhưng hướng đối tượng cung cấp một số cơ sở vững chắc Trong những năm 1950, các nhà phát triển phía sau các ngôn ngữ như LISP và SmallTalk đã triển khai một hệ thống số cho một mảng (các lập trình viên vẫn tính từ một trở đi), trong đó một mảng các phần tử n được lập chỉ mục từ 0 đến n-1. Những lập trình này bắt đầu sử dụng 'nil' để mô tả các kết quả không hợp lệ. Được cảm hứng rộng rãi bởi Lisp và Smalltalk, Matz đã tham gia phát triển Ruby. Trong Object C, null thường là một giá trị con trỏ () cho biết con trỏ không hợp lệ và nil là một giá trị đối tượng(Một lưu ý nhanh về sự khác biệt giữa nil và null: đơn giản là sở thích). Đưa ra bản thể luận về số không trong lập trình là một chuyện phức tạp hơn. Ở cấp mã máy, số 0 đại diện cho trạng thái "tắt", trong đó không có dòng điện. Ở cấp cú pháp của một ngôn ngữ như Ruby, nhiệm vụ miêu tả và thử nghiệm về tính đặc biệt như không là gì cả được đánh giá bởi lớp nil. Ruby của nil trỏ đến NilClass. Các thể hiện của NilClass được trả lại khi một đối tượng ánh xạ không hợp lệ, không tồn tại hoặc rõ ràng được gọi là - làm tăng thêm kết quả phi logic

Ruby và Ruby on Rails có 4 phương pháp trung tâm để kiểm tra nil và tình trạng rỗng không. Phương pháp Ruby đầu tiên, #nil ?, có thể được sử dụng trên bất kỳ đối tượng nào và trả về true cho các đối tượng không có ánh xạ và các đối tượng được ánh xạ Đến một giá trị nil. #empty? Được sử dụng để xác định xem mảng, băm hoặc chuỗi có nội dung - phương thức trả về đúng nếu kích thước nội dung lớn hơn không (chỉ số zero).

nil?

  • nil? là một hàm của Object, nên tất cả các object kế thừa từ Object mặc định đều có hàm nil?
  • chỉ có nil object trả về true khi gọi nil?

empty?

  • empty? là function có sẵn của String, Array, Hash
  • empty? sẽ trả về true nếu:
  • string.length == 0
  • array.length == 0
  • hash.length == 0

Rails được xây dựng với hai phương pháp bổ sung: #blank? Và # present ?, về cơ bản # present ? là sự phủ định của #blank ?. Những phương pháp này được dự định để sử dụng trên các hình thức có thể có tiềm năng giữ một phần tử như nil cho một số nguyên như số không. Blank cũng được đánh giá true trên các chuỗi chứa khoảng trắng - không giống như phương thức #empty mà nó trả về (khoảng trắng, trong một ngữ cảnh Ruby, không rỗng). #brank? Có thể hoạt động trên bất kỳ đối tượng cũng như công việc như #empty? Trên dây, mảng và băm. Hãy nhớ rằng, obj.blank? == obj.present ?.

.brank?

  • một object được coi là blank nếu như nó false, empty hoặc là 1 chuỗi chỉ gồm các khoảng trắng.

.present?

  • Nếu 1 object không blank, vậy nó present.

Trên là hình mô tả cách trực quan và rõ ràng cho các phương thức, tùy ngữ cảnh mà bạn áp dụng nhé! Cảm ơn bạn đã đọc nguồn: https://medium.com/@makejusich/nil-null-naught-and-nothing-ef8bafcd73ae

0