cuốn sách gpt4 ai đã làm

21. Mô-đun Ruby (Mô-đun)

In lại Tác giả: Đường đến ông chủ Thời gian cập nhật: 21/01/2024 22:46:34 26 4
mua khóa gpt4 Nike

Mô-đun là một cách nhóm các phương thức, lớp và hằng số lại với nhau.

Mô-đun xác định một không gian tên, tương đương với một hộp cát. Các phương thức và hằng số trong đó sẽ không xung đột với các hằng số phương thức ở nơi khác.

Các mô-đun mang lại hai lợi ích chính:

1. Mô-đun này cung cấp mộtkhông gian tênvà tránh xung đột tên;
2. Mô-đun được triển khaipha trộnthiết bị;

Các mô-đun tương tự như các lớp, nhưng có một điểm khác biệt:

  • Mô-đun không thể được khởi tạo
  • Mô-đun không có lớp con
  • Một mô-đun chỉ có thể được xác định bởi một mô-đun khác

Cú pháp mô-đun Ruby

Cú pháp định nghĩa mô-đun trong ngôn ngữ Ruby như sau

mô-đun  câu lệnh 1 câu lệnh 2 ........... kết thúc

1. Cách đặt tên hằng trong mô-đun cũng tương tự như cách đặt tên hằng lớp, bắt đầu bằng chữ in hoa;
2. Các định nghĩa phương thức trong mô-đun cũng trông giống như các lớp;
3. Bạn có thể tham chiếu một hằng số bằng tên mô-đun và hai dấu hai chấm;

ví dụ

xin chào.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: hello.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. module Hello PI = 3.141592654 def Hello.sin(x) # .. end def Hello.cos(x) # .. end end

Ngôn ngữ Ruby cho phép định nghĩa nhiều mô-đun có cùng tên hàm nhưng các hàm khác nhau.

nhanh.rb

# !/usr/bin/ruby -w # -*-coding:utf-8 -*- # filename: quick.rb # tác giả: DDKK.COM Anh em xem nhé, trạm thông tin lập trình dành cho lập trình viên (www.ddkk.com) # Copyright © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. Mô-đun nhanh VERY_BAD = 0 BAD = 1 def Quick.sin(badness) # ... end end

Cũng giống như việc định nghĩa một phương thức lớp, khi định nghĩa một phương thức trong một mô-đun, bạn có thể chỉ định rằng tên mô-đun được theo sau bởi một dấu chấm và dấu chấm theo sau là tên phương thức.

hồng ngọc yêu cầu tuyên bố

câu lệnh yêu cầu được sử dụng để tải các mô-đun

Nếu chương trình của bên thứ ba muốn sử dụng bất kỳ mô-đun nào được xác định, nó có thể sử dụng Ruby yêu cầu câu lệnh để tải tập tin mô-đun

yêu cầu định dạng cú pháp

yêu cầu tên tập tin

phần mở rộng tập tin .rb Không bắt buộc

ví dụ

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: main.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu $LOAD_PATH << '.' require 'quick.rb' require 'hello' y = hành vi sai trái của Quick.sin(Trig::PI/4) = Hello.sin(Moral::VERY_BAD)

sử dụng** $ LOAD_PATH << '.'** Cho Ruby biết rằng nó phải tìm kiếm tệp được tham chiếu trong thư mục hiện tại. Nếu bạn không muốn sử dụng$`LOAD_PATH thì bạn có thể sử dụng yêu cầu_tương đối để tham chiếu các tập tin từ một thư mục tương đối

Để ý

các tập tin chứa cùng tên hàm. Vì vậy, điều này sẽ dẫn đến sự mơ hồ về mã khi tham chiếu chương trình gọi, nhưng các mô-đun sẽ tránh được sự mơ hồ về mã này và có thể gọi hàm thích hợp bằng cách sử dụng tên của mô-đun.

hồng ngọc bao gồm tuyên bố

Ngôn ngữ Ruby cho phép nhúng các mô-đun trong các lớp

Ngôn ngữ Ruby cung cấp bao gồm Câu lệnh được sử dụng để nhúng các mô-đun vào các lớp

Định dạng cú pháp bao gồm như sau

bao gồm tên mô-đun

Để ý

Nếu mô-đun được xác định trong một tệp riêng biệt, bạn cần sử dụng yêu cầu tuyên bố đề cập đến tập tin

ví dụ

tuần.rb

# !/usr/bin/ruby -w # -*-coding:utf-8 -*- # filename: week.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. mô-đun Tuần FIRST_DAY = "Chủ nhật" def Week.week_in_month đặt "Bạn có bốn tuần trong một tháng" end def Week.week_in_year đặt "Bạn có 52 tuần trong một năm" end end

Bây giờ, mô-đun có thể được tham chiếu trong lớp

main.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: main.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. $LOAD_PATH << '.' yêu cầu lớp "tuần" Thập kỷ bao gồm Tuần no_of_yrs=10 def no_of_months đặt Tuần::FIRST_DAY số=10*12 đặt số cuối cuối d1=Thập kỷ.đặt mới Tuần::FIRST_DAY Tuần.weeks_in_tháng Tuần.weeks_in_năm d1.no_of_months

Chạy ví dụ Ruby ở trên và kết quả sẽ như sau

$ ruby ​​​​main.rb Chủ nhật Bạn có bốn tuần trong một tháng Bạn có 52 tuần trong một năm Chủ nhật 120

Mixin trong Ruby

Trước khi tiếp tục đọc phần này, bạn cần có hiểu biết sơ bộ về các khái niệm hướng đối tượng

Khi một lớp có thể kế thừa các đặc điểm của một lớp từ nhiều lớp cha, lớp đó sẽ hiển thị tính đa kế thừa.

Ruby không trực tiếp hỗ trợ đa kế thừa, nhưng các mô-đun của Ruby có một tính năng kỳ diệu khác. Nó loại bỏ sự cần thiết của đa kế thừa và cung cấp một phương thức gọi là pha trộn cơ chế

Ngôn ngữ Ruby không thực sự triển khai nhiều cơ chế kế thừa mà sử dụng cơ chế mixin để thay thế.

Đưa mô-đun vào định nghĩa lớp và các phương thức trong mô-đun được trộn vào lớp.

ví dụ

a.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: a.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. module A def a1 end def a2 end end

b.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: b.rb # tác giả: DDKK.COM Nhìn này em trai, trang thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu. mô-đun B def b1 end def b2 end end.

xin chào.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: hello.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu $LOAD_PATH << '.' yêu cầu "a" yêu cầu "b" lớp Xin chào bao gồm A bao gồm B def s1 end kết thúc

main.rb

# !/usr/bin/ruby -w # -*- Encoding:utf-8 -*- # filename: main.rb # tác giả: DDKK.COM Nhìn này anh ơi, trạm thông tin lập trình lập trình viên (www.ddkk.com) # Bản quyền © 2015-2065 www.ddkk.com. Mọi quyền được bảo lưu yêu cầu "xin chào" samp= Hello.new samp.a1 samp.a2 samp.b1 samp.b2 samp.s1

  • Mô-đun A gồm có phương thức a1 và a2
  • Mô-đun B gồm có phương thức b1 và b2
  • Lớp Hello chứa các mô-đun A và B
  • Class Hello có quyền truy cập vào cả bốn phương thức, tức là a1, a2, b1 và b2

Bạn có thể thấy lớp Hello kế thừa hai module Có thể nói lớp Hello sử dụng đa kế thừa hoặc đa kế thừa. pha trộn

26 4 0
Bài viết khuyến nghị: 03. Quy tắc RDF
Bài viết khuyến nghị: 06. Thùng chứa RDF
Bài viết khuyến nghị: 06. Cấu hình môi trường trên Ruby Windows
Bài viết khuyến nghị: 03. Môi trường Ruby
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress