- 921. Thêm tối thiểu để làm cho dấu ngoặc đơn hợp lệ Thêm tối thiểu để làm cho dấu ngoặc đơn hợp lệ
- 915. Phân vùng mảng thành các khoảng rời rạc
- 932. Mảng đẹp Mảng đẹp
- 940. Dãy số riêng biệt II Dãy số khác nhau II
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.
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ú 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;
# !/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
# !/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.
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 tên tập tin
phần mở rộng tập tin .rb Không bắt buộc
# !/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.
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
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
# !/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
# !/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
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.
# !/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
# !/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.
# !/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
# !/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
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
Dưới đây là một máy chủ Ruby rất đơn giản. require 'socket' local_socket = Socket.new(:INET, :STREAM) local_addr = Socket.
Tôi đang sử dụng OS X (sử dụng bash) và chưa quen với unix. Tôi muốn biết liệu tôi có thể sửa đổi một số tệp để có thể chạy chương trình Ruby hay không, tôi không cần "Ruby file.rb" nhưng có thể chạy "Ruby.rb". hợp lý
Tôi đang gặp một số vấn đề khi thay thế chuỗi trong Ruby. Văn bản gốc của tôi: Việc con người làm không bằng việc thú vật làm. Tôi muốn thay thế nó bằng: ==Những gì== con người làm không giống ==những gì== động vật làm.
Tôi muốn làm điều gì đó như thế này từ tập lệnh Ruby trong một vòng lặp: viết một tệp a.rb (thay đổi mỗi lần lặp) hệ thống thực thi (Ruby 'a.rb') a.rb viết một chuỗi có kết quả vào một tệp "results " a.rb đã hoàn thành và
Vấn đề của tôi là cố gắng tạo một máy chủ cục bộ để tôi có thể hiểu ứng dụng đang được nhóm mới của tôi phát triển. Vấn đề của tôi là tôi đang sử dụng Ruby 2.3.3 và Gemfile yêu cầu 2.3.1. Tôi không thể chỉnh sửa Gemfile vì tôi được bảo là
Tôi có tiện ích dòng lệnh được viết bằng Ruby bằng khung GLI. Tôi muốn định cấu hình tiện ích dòng lệnh trong thư mục chính của mình, sử dụng chính Ruby làm DSL để xử lý nó (tương tự như Gemfile hoặc Rakefile). TÔI
Tôi có mã này trong Trình điều khiển ứng dụng Rails của mình: def delete object = model.datamapper_class.first(:sourced_id =>
Tôi đang tìm một trình phân tích cú pháp: thân thiện với việc phân tích cú pháp Ruby, có các quy tắc được thiết kế trang nhã, tạo ra các lỗi phân tích cú pháp thân thiện với người dùng, có nhiều tài liệu hướng dẫn người dùng hơn ví dụ về máy tính, CẬP NHẬT: cho phép bỏ qua khoảng trắng tùy chọn khi viết ngữ pháp. Phân tích cú pháp nhanh không phải là một tính năng quan trọng.
Tôi mới làm quen với Ruby và tôi nghe nói rằng có một cách viết mã "Ruby". Ngoài Ruby on Rails, dự án nào khác đáng học và được công nhận là có thiết kế tốt? Câu trả lời hay nhất Tôm được tạo ra rõ ràng không chỉ là một bản PDF hay
Tôi biết một câu hỏi tương tự đã được hỏi trước đây, nhưng làm cách nào để tạo tệp Ruby có thể chạy trong thiết bị đầu cuối mà không cần nhập "Ruby" ở phía trước? Mục tiêu cuối cùng ở đây là tạo ra một loại bộ công cụ dòng lệnh. Bây giờ, để làm được điều tôi muốn người dùng có thể làm
Ví dụ: hàm băm a là {:name=>'mike',:age=>27,:gender=>'male'} hàm băm b là {:name=>'mike'} Tôi tự hỏi liệu có cách nào tốt hơn để xác định liệu hàm băm b có nằm trong hàm băm hay không và
Tôi là nhà phát triển ASP.NET MVC, người đã quyết định học Ruby và Ruby on Rails. Tôi đã học được một chút và tạo một trang web trên RoR. Phát triển trên ASP.NET MVC, tôi luôn sử dụng kiến trúc ba tầng:
Gần đây tôi thấy Gary Bernhardt trình diễn các phím tắt vim mà anh ấy sử dụng để thực thi mã Ruby trong vim. Phím tắt là: map ,t :w\|:!ruby %. Có vẻ như phương thức này luôn thực thi hệ thống Rub
Trong câu trả lời được chọn cho câu hỏi này về Blue Ruby, Chuck đã nói: Tất cả các triển khai Ruby hiện tại được biên dịch thành
Tôi có một mảng Ruby > list =Request.find_all_by_artist("Metallica").map(&:song) => ["Không có gì khác quan trọng"
Tôi đang gặp rắc rối với việc làm tròn. Tôi có một số float mà tôi muốn làm tròn đến một phần trăm dấu thập phân. Tuy nhiên, tôi chỉ có thể sử dụng .round về cơ bản biến nó thành int, nghĩa là 2.34.round # => 2. Có cái nào không
Tôi đã viết một ứng dụng web nhỏ sử dụng Ruby on Rails, mục đích chính của nó là tải lên, lưu trữ và hiển thị kết quả từ tệp xml (tệp có dung lượng tối đa vài MB). Sau khi chạy nó được khoảng 2 tháng, tôi nhận thấy rằng quy trình lai
Làm cách nào chúng ta có thể chuyển đổi một chuỗi như thế này trong Ruby: To: Latorre Best Answers = "" => "" su
Khi đi qua ruby monk, thỉnh thoảng họ ném vào một đoạn mã từ trường bên trái với cú pháp lạ: def tính toán (xyz) trả về nil trừ khi xyz xyz.map {|a,
Tôi không chắc mình đang làm gì sai, nhưng có vẻ như tôi đang hiểu sai. Vấn đề là, với một chuỗi số được phân tách bằng dấu cách, bạn phải trả về số lớn nhất và nhỏ nhất. LƯU Ý: Tất cả các số đều là Int32 hợp lệ, không cần xác thực chúng. Luôn có ít nhất một số trong chuỗi đầu vào. Chuỗi đầu ra phải
Tôi là một lập trình viên xuất sắc, rất giỏi!