stanford-oval/wikipedia huggingface dataset:
Lực lượng Vũ trang Iraq
Cấu trúc > Không quân Iraq

Không quân Iraq được thiết kế để hỗ trợ các lực lượng mặt đất với khả năng giám sát, trinh sát và nâng quân. Hai phi đội trinh sát sử dụng máy bay hạng nhẹ, ba phi đội trực thăng được sử dụng để di chuyển quân đội và một phi đội vận tải hàng không sử dụng máy bay vận tải C-130 để di chuyển quân đội, thiết bị và vật tư. Nó hiện có 3.000 nhân sự. Nó được lên kế hoạch tăng lên 18.000 nhân sự, với 550 máy bay vào năm 2018.
Cấu trúc > Hải quân Iraq

Hải quân Iraq là một lực lượng nhỏ với 1.500 thủy thủ và sĩ quan, ngoài 800 lính thủy đánh bộ, được thiết kế để bảo vệ bờ biển và đường thủy nội địa của Iraq khỏi sự xâm nhập của quân nổi dậy. Hải quân cũng chịu trách nhiệm về an ninh của các giàn khoan dầu ngoài khơi. Nó sẽ có các phi đội tuần tra ven biển, các đội thuyền tấn công và một tiểu đoàn biển thứ hai. Lực lượng này bao gồm 2.000 đến 2.500 thủy thủ vào năm 2010 Hải quân Iraq sở hữu 16 tàu tuần tra, 35 tàu tấn công và 1 tàu ngoài khơi.
Chú thích

↑  “CIA – The World Factbook – Iraq”. Central Intelligence Agency. Bản gốc lưu trữ ngày 24 tháng 12 năm 2018. Truy cập ngày 25 tháng 6 năm 2016.
1 2 3  IISS 2019, tr. 344.Lỗi sfn: không có mục tiêu: CITEREFIISS2019 (trợ giúp)
Trung đoàn Imam Musa Al-Kazim vào năm 1920, đội hình đầu tiên của quân đội Iraq.
Tập trận bắn đạn thật
Máy bay F-16 của Không quân Iraq.
Prez-vers-Noréaz

| Prez-vers-Noréaz |
| --- | --- |

 

Prez-vers-NoréazXem bản đồ Thụy SĩPrez-vers-NoréazXem bản đồ Bang Fribourg
Quốc gia: Thụy Sĩ
Bang: Fribourg
Huyện: Sarine
Diện tích
 • Tổng cộng: 5,7 km2 (22 mi2)
Độ cao: 646 m (2,119 ft)
Dân số (2017-12-31)
 • Tổng cộng: 1.109
 • Mật độ: 19/km2 (50/mi2)
Mã bưu chính: 1746
Mã SFOS: 026
Giáp với: Avry, Corserey, La Brillaz, Montagny, Noréaz
Website: www.prez-vers-noreaz.ch   SFSO statistics
Nhà thờ Prez-vers-Noréaz
Prez-vers-Noréaz là một đô thị trong huyện Sarine thuộc bang Fribourg ở Thụy Sĩ.
Gián nhà

| Gián nhà |
| --- | --- |
Một con gián nhà
Phân loại khoa học
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Blattodea
Họ (familia): Blattidae
Chi (genus): Periplaneta
Species
 Periplaneta aboriginea  Periplaneta americana  Periplaneta australasiae  Periplaneta brunnea  Periplaneta fuliginosa  Periplaneta japonica   ...
Gián nhà (Danh pháp khoa học: Periplaneta) là một chi gián thuộc họ Blattidae, trong chi này có nhiều loài gián sống trong nhà của con người.
Đặc điểm

Gián nhà là chi côn trùng có cơ thể dẹt hướng lưng bụng, thông thường có đôi cánh ôm kín lưng. Kích thước cơ thể của chúng khác nhau theo loài, có thể dài từ 2 – 3mm đến 8 cm. Toàn thân có thể màu nâu thẫm (lúc mới sinh có màu trắng). Đa số các loài gián ít khi bay, song chúng bò rất nhanh.
Các loài gián nhà

Gián Mỹ (Periplaneta americana): loài gián này xuất hiện ở hầu hết các khu dân cư trên toàn thế giới. Cơ thể dài 3,5 – 4 cm, có màu nâu thẫm. Gián Mỹ đẻ trứng thành ổ, có 16 trứng, xếp thành hàng chiều dài từ 0,8 – 1 cm.
Gián Úc (Periplaneta australasiae): gián Úc được gặp chủ yếu ở các vùng nhiệt đới và cận nhiệt. Gián Úc cũng giống loài gián Mỹ, nhưng cơ thể nhỏ hơn (dài 3,1 – 3,7 cm) và màu nhạt hơn gián Mỹ. Loài gián này có 2 sọc vàng nhạt từ 2 bên gốc cánh kéo xuống 1/3 chiều dài của cánh trước. Một ổ trứng của gián Úc có 22 – 24 trứng.
Gián Nhật (Periplaneta japonica)
Gián Brunei (Periplaneta brunnea)
Tác hại

Gián nhà được coi là loài gây hại, có hại cho sinh hoạt hàng ngày và sức khỏe của con người. Chúng ăn nhiều loại đồ vật trong nhà như quần áo, giấy, thức ăn của con người và cả các chất thải trong thùng rác nhà bếp. Sau khi ăn thực phẩm bị ô nhiễm, vi khuẩn và động vật nguyên sinh có thể tồn tại trong hệ thống tiêu hóa của gián trong một tháng hoặc hơn. Sau đó, thực phẩm hoặc đồ dùng có thể bị nhiễm phân gián và nguồn bệnh được lan truyền khi gián di chuyển, kiếm ăn và thải phân. Gián nhà có tập tính sống ở những nơi bẩn thỉu, hủy hoại và làm thức ăn bị nhiễm khuẩn, đồng thời có thể gặm nhấm làm hư hỏng một số vật dụng như quần áo, vải vóc, bìa gáy sách vở. Chúng vừa ăn vừa nôn mửa những thức ăn mà chúng đã tiêu hóa một phần và đào thải phân rải rác khắp nơi. Các chất bài tiết, nôn mửa từ miệng gián, các tuyến trên cơ thể của gián có mùi hôi đặc biệt, rất khó chịu và đọng lại rất lâu trên những vật dụng mà nó đã đi qua.
Thiên địch của gián

Tò vò ngọc lục bảo là một loài côn trùng cánh màng trong họ Ampulicidae, thuộc chi Ampulex. Loài này bắt gián và chích nọc độc làm tê liệt, đẻ trứng vào gián còn sống nhưng bị chế ngự, ấu trùng sẽ ăn thịt nạn nhân và trưởng thành.
Mèo nhà
Gián Mỹ
Gián Úc
Quang Minh (định hướng)

Quang Minh có thể là:
Địa danh > Việt Nam

Thị trấn Quang Minh, huyện Mê Linh, thành phố Hà Nội
Xã Quang Minh, thị xã Chơn Thành, tỉnh Bình Phước
Xã Quang Minh, huyện Hiệp Hòa, tỉnh Bắc Giang
Xã Quang Minh, huyện Lương Tài, tỉnh Bắc Ninh
Xã Quang Minh, huyện Bắc Quang, tỉnh Hà Giang
Xã Quang Minh, huyện Gia Lộc, tỉnh Hải Dương
Xã Quang Minh, huyện Vân Hồ, tỉnh Sơn La
Xã Quang Minh, huyện Kiến Xương, tỉnh Thái Bình
Xã Quang Minh, huyện Văn Yên, tỉnh Yên Bái.
Địa danh > Trung Quốc

Khu Quang Minh thuộc thành phố Thâm Quyến, tỉnh Quảng Đông
Tên người

Quang Minh, diễn viên hài người Mỹ gốc Việt. Xem thêm Quang Minh và Hồng Đào.
Nguyễn Quang Minh, nam ca sĩ người Hải Phòng dòng nhạc trữ tình nổi tiếng tại Sài Gòn cuối thập niên 1990
Đàm Quang Minh, hiệu trưởng trường đại học Phú Xuân
Lê Quang Minh, biên tập viên, MC của đài VTV, từng dẫn chương trình Thời sự 19 giờ, sinh năm 1976
Lê Quang Minh, sĩ quan Quân đội nhân dân Việt Nam
Trần Quang Minh, biên tập viên, MC của đài VTV, từng dẫn chương trình Bữa trưa vui vẻ trên VTV6
Trần Quang Minh, Trung tướng Công an nhân dân Việt Nam
Ruby (ngôn ngữ lập trình)

Bài này viết về ngôn ngữ lập trình. Đối với các định nghĩa khác, xem Ruby (định hướng).
Đừng nhầm lẫn với Ruby on Rails.
| --- | --- |

Mẫu hình: Multi-paradigm: Object-oriented, imperative, functional, reflective
Thiết kế bởi: Matsumoto Yukihiro
Nhà phát triển: Matsumoto Yukihiro, et al.
Xuất hiện lần đầu: 1995; 30 năm trước (1995)

Phiên bản ổn định: 3.3.6    /    5 tháng 11 năm 2024; 57 ngày trước (2024-11-05)
 
Kiểm tra kiểu: Duck, dynamic, strong
Phạm vi: Từ vựng, đôi khi động
Ngôn ngữ thực thi: C
Hệ điều hành: Đa nền tảng
Giấy phép: Ruby, GPLv2 or 2-clause BSD license
Phần mở rộng tên tập tin: .rb,.rbw
Trang mạng: www.ruby-lang.org
Các bản triển khai lớn
Ruby MRI, YARV, Rubinius, MagLev, JRuby, MacRuby, RubyMotion, HotRuby, IronRuby, Mruby
Ảnh hưởng từ
Ada, C++, CLU, Dylan, Eiffel, Lua, Lisp, Perl, Python, Smalltalk
Ảnh hưởng tới
CoffeeScript, Clojure, Crystal, D, Elixir, Falcon, Groovy, Ioke, Julia, Mirah, Nu, potion, Reia, Rust, Swift
  Ruby Programming tại Wikibooks 
Ruby là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp.
Ruby cung cấp nhiều mẫu hình lập trình, bao gồm lập trình hàm, hướng đối tượng, mệnh lệnh, phản xạ. Nó sử dụng hệ thống kiểu biến động và tự động quản lý bộ nhớ tự động.
Lịch sử

Ruby được tạo ra từ 24 tháng 2 năm 1993, bởi lập trình viên người Nhật Bản tên là Matsumoto Yukihiro (松本 行弘), biệt danh Matz. Phiên bản chính thức 0.95 (Đây là phiên bản công khai đầu tiên của Ruby được công bố tại Nhật Bản) vào ngày 21 tháng 12 năm 1995. Ở phiên bản Ruby 0.95, nó đã có nhiều tính năng quen thuộc trong các phiên bản sau của Ruby, bao gồm thiết kế hướng đối tượng, các lớp với kế thừa, mixin, vòng lặp, xử lý ngoại lệ và thu gom rác.
Sau khi phát hành Ruby 0.95 vào năm 1995, một số phiên bản ổn định của Ruby đã được phát hành trong những năm tiếp theo:
Ruby 1.0: ngày 25 tháng 12 năm 1996.
Ruby 1.2: tháng 12 năm 1998.
Ruby 1.4: tháng 8 năm 1999.
Ruby 1.6: tháng 9 năm 2000.
Lịch sử > Ruby 1.9

Ruby 1.9 được phát hành vào ngày Giáng sinh năm 2007. Hiệu quả với Ruby 1.9.3, phát hành ngày 31 tháng 10 năm 2011, Ruby chuyển từ việc được cấp phép kép theo Giấy phép Ruby và GPL để được cấp phép kép theo Giấy phép Ruby và giấy phép BSD hai điều khoản. Việc chuyển đổi sang phiên bản 1.9 từ 1.8 đã bị chậm lại do nhiều gems phổ biến cần được viết lại.
Ruby 1.9 giới thiệu nhiều thay đổi đáng kể so với các phiên bản 1.8. Ví dụ:
Giới hạn vùng tham chiếu của các biến cục bộ (các biến cục bộ chỉ được sử dụng ở trong các block mà chúng được khai báo)
Bổ sung cú pháp lambda:f = ->(a,b) { puts a + b }
Bổ sung cú pháp Hash, sử dụng dấu hai chấm cho các khóa biểu tượng (symbol key):{symbol_key: "value"} == {:symbol_key => "value"}
Hỗ trợ mã hóa ký tự theo chuỗi.
API socket mới (hỗ trợ IPv6)
require_relative nhập khẩu an ninh
Ruby 1.9 đã lỗi thời kể từ ngày 23 tháng 2 năm 2015, và nó sẽ không còn nhận được bản sửa lỗi và bảo mật nữa. Người dùng nên nâng cấp lên phiên bản mới hơn.
Lịch sử > Bảng các phiên bản Ruby

| Phiên bản | Phiên bản nâng cấp | Ngày phát hành | Kết thúc giai đoạn hỗ trợ | Kết thúc giai đoạn bảo trì bảo mật |
| --- | --- | --- | --- | --- |
| 1.0 | Chưa rõ | 25/12/1996 | Chưa rõ | Chưa rõ |
| 1.8 | 1.8.7-p374 | 04/08/2003 | 06/2012 | 01/07/2014 |
| 1.9 | 1.9.3-p551 | 25/12/2007 | 24/02/2014 | 23/02/2015 |
| 2.0 | 2.0.0-p648 | 24/02/2013 | 24/02/2016 | 24/02/2016 |
| 2.1 | 2.1.10 | 25/12/2013 | 30/03/2016 | 31/03/2017 |
| 2.2 | 2.2.10 | 25/12/2014 | 28/03/2017 | 31/03/2018 |
| 2.3 | 2.3.8 | 25/12/2015 | 28/03/2018 | 31/03/2019 |
| 2.4 | 2.4.10 | 25/12/2016 | 01/04/2019 | 31/03/2020 |
| 2.5 | 2.5.9 | 25/12/2017 | 01/04/2020 | 05/04/2021 |
| 2.6 | 2.6.10 | 25/12/2018 | 01/04/2021 | 12/04/2022 |
| 2.7 | 2.7.8 | 25/12/2019 | 01/04/2022 | 31/03/2023 |
| 3.0 | 3.0.7 | 25/12/2020 | 01/04/2023 | 23/04/2024 |
| 3.1 | 3.1.6 | 25/12/2021 | 01/04/2024 | 31/03/2025 (dự kiến) |
| 3.2 | 3.2.6 | 25/12/2022 | Chưa công bố | 31/03/2026 (dự kiến) |
| 3.3 | 3.3.6 | 25/12/2023 | Chưa công bố | 31/03/2027 (dự kiến) |
| 3.4 | 3.4.? | Chưa công bố | Chưa công bố | Chưa công bố |
Chú thích:  Hiện tại Ruby chỉ hỗ trợ phiên bản: 3.1, 3.2 và 3.3. Các phiên bản trước đó đã cũ và không còn được hỗ trợ.  3.3.6 là phiên bản mới nhất của Ruby  Thông tin các phiên bản Ruby được tham khảo từ các trang Ruby Releases và Ruby Maintenance Branches
Lịch sử > Cái tên Ruby

Nguồn gốc của cái tên "Ruby" là từ một phiên chat online giữa Matsumoto và Ishitsuka Keiji vào ngày 24 tháng 2 năm 1993, trước khi bất kỳ đoạn mã nào được viết cho ngôn ngữ này. Ban đầu, "Coral" và "Ruby" là hai cái tên được đề xuất. Matsumoto chọn tên sau trong email gửi đến Ishitsuka. Sau này Matz cũng bất ngờ khi phát hiện ra Pearl là viên đá quý tượng trưng cho những người sinh tháng 6, còn Ruby thì tượng trưng cho những người sinh tháng 7. Anh cho rằng cái tên Ruby như thế là phù hợp vì Ruby kế thừa và phát triển nhiều đặc tính từ Perl .
Quan điểm

Quan điểm chính trong việc thiết kế của Matz là nhằm giảm thiểu các công việc nhàm chán mà họ, các nhà lập trình, buộc phải làm; tiếp đến là nguyên tắc thiết kế giao diện người dùng (user interface) hiệu quả. Ông nhấn mạnh rằng việc thiết kế hệ thống cần phải tập trung vào con người, hơn là vào máy tính:
Ngôn ngữ Ruby được thiết kế nhằm theo nguyên tắc ít gây ngạc nhiên nhất (principle of least surprise-POLS), nghĩa là ngôn ngữ hoạt động theo một cách trực quan hay ít nhất đó cũng là nhận xét mà các nhà lập trình đưa ra. Nguyên tắc này không xuất phát từ Matz và, nói chung, Ruby gần với suy nghĩ ít ngạc nhiên nhất của 'Matz' hơn.
Ngữ nghĩa

Ruby là một ngôn ngữ hướng đối tượng: mỗi giá trị đều là một đối tượng (object), bao gồm các kiểu dữ liệu mà đối với các ngôn ngữ khác, chúng là kiểu cơ bản (primitive) như integer. Mỗi hàm (function) là một phương thức (method). Tên biến (variables) chính là tham chiếu (references) đến các đối tượng, bản thân nó không phải là đối tượng. Ruby hỗ trợ kế thừa (inheritance) với dynamic dispatch, mixin và singleton method (thuộc về, và để định nghĩa cho, một instance đơn hơn là định nghĩa dành cho lớp). Mặc dù Ruby không hỗ trợ đa kế thừa, các lớp vẫn có thể được đưa vào các module dưới dạng các mixins. Cú pháp dạng thủ tục (procedural syntax) vẫn còn được hỗ trợ, có vẻ như là ngoài tầm vực của mọi đối tượng, nhưng thực sự là thuộc một thể hiện của class Object tên là 'main'. Vì class này là cha của mọi class khác, nó trở trên ẩn đối với mọi lớp và đối tượng.
Ruby được xem là một ngôn ngữ lập trình đa mẫu hình (multi-paradigm programming language): nó cho phép bạn lập trình dạng thủ tục (tạo ra các hàm/biến nằm ngoài phạm vi của các lớp và biến chúng thành một phần của đối tượng gốc, 'self' Object), với khả năng hướng đối tượng (mọi thứ đều là đối tượng) hay hàm (nó có các hàm không có tên (anonymous functions), closures, và continuations; mọi câu lệnh đều có giá trị trả về, và các hàm đều trả về kết quả ước lượng cuối cùng). Nó hỗ trợ mạnh cho tự định kiểu (type introspection), reflection và meta-programming.
Theo Ruby FAQ, "Nếu bạn thích Perl, bạn sẽ thích Ruby và sẽ thấy thoải mái với cú pháp của nó. Nếu bạn thích Smalltalk, bạn sẽ thích Ruby và sẽ thấy thoải mái với ngữ nghĩa của nó (semantics). Nếu bạn thích Python, bạn có thể hoặc không thể dừng lại bởi sự khác biệt lớn trong triết lý hiện thực giữa Python và Ruby/Perl."
Trình thông dịch

Ruby có hai bản thông dịch chính: bộ thông dịch Ruby ban đầu (viết tắt là MRI), bản được dùng phổ biến nhất, và JRuby, bộ thông dịch dựa trên ngôn ngữ Java. Bộ thông dịch Ruby đã được cài đặt trên nhiều nền tảng khác nhau, bao gồm Unix, Microsoft Windows, DOS, Mac OS X, OS/2, Amiga và một số nền tảng khác. Bản chính thức của Ruby có kèm theo "IRB", là bộ thông dịch dạng dòng lệnh trực tiếp (interactive command-line interpreter) giúp cho việc kiểm tra code nhanh chóng.
Trình thông dịch > Quy ước bản quyền

Ruby được phân phối tự do theo đăng ký tự do và mã nguồn mở GPL và Ruby License  Lưu trữ 2011-08-26 tại Wayback Machine.
Tính năng

Hướng đối tượng
Xử lý ngoại lệ
Iterator và closures (dựa vào cách truyền một khối lệnh)
Native, biểu thức chính quy như Perl ở mức độ ngôn ngữ
Chồng toán tử (operator overloading)
Thu hồi rác tự động
Tính khả chuyển cao (portable)
Có thể chạy đa luồng (multi-threading) trên mọi platforms
Khả năng nạp động các DLL/thư viện chia sẻ trên hầu hết mọi platforms.
Tự kiểm tra (introspection), reflection và meta-programming
Rất nhiều thư viện chuẩn
Hỗ trợ dependency injection
Continuation và generator (xem ví dụ tại RubyGarden: continuations Lưu trữ 2005-11-26 tại Wayback Machine và generators Lưu trữ 2005-11-26 tại Wayback Machine)
Dùng khối lệnh (code block)
Ruby hiện tại vẫn chưa hỗ trợ Unicode, dù chỉ mới hỗ trợ tạm thời cho UTF-8.
Những vấn đề mới

Mặc dù việc thiết kế Ruby tuân theo nguyên tắc ít gây ngạc nhiên nhất, nhưng một số tính năng khác với các ngôn ngữ khác như C hay Perl:
Các tên bắt đầu bằng ký tự hoa được xem là hằng, vì thế biến cục bộ nên bắt đầu bằng ký tự thường.
Việc đánh giá Boolean đối với các dữ liệu không phải bool rất chặt chẽ: 0, "" và [] được xem là true: Trong C, biểu thức 0 ? 1: 0 được xem là 0. Trong Ruby, tuy nhiên, nó lại trả về 1, vì số 0 được xem là "một cái gì đó"; chỉ có nil và false mới được xem là bằng false. Một hệ luận đối với quy luật này là theo qui ước, các phương thức của Ruby—ví dụ, biểu thức chính quy tìm kiếm — sẽ trả về các số, chuỗi, danh sách etc. nếu thành công, nhưng lại trả về nil nếu thất bại (ví dụ, không tìm thấy).
Để biểu diễn một số thực dấu chấm động, ta phải theo quy tắc dùng ký số zero (99.0) hay chuyển đổi tường minh (99.to_f). Việc dùng dấu chấm là không đủ (99.) vì các số vẫn có thể nhận cú pháp có phương thức.
Thiếu một kiểu dữ liệu ký tự ("char"). Điều này có thể gây ngạc nhiên khi duyệt qua chuỗi: "abc"[0] cho ra 97 (một số nguyên, biểu diễn mã ASCII của ký tự đầu tiên trong chuỗi); để lấy được "a" dùng "abc"[0,1] (chuỗi con có chiều dài 1) hay "abc"[0].chr.
Một danh sách các lỗi thường gặp ("gotchas") có thể tra trong cuốn sách của Hal Fulton The Ruby Way, trang 48–64. Tuy nhiên, vì danh sách trong cuốn sách là dựa trên phiên bản cũ của Ruby (version 1.6), một số mục đã được sửa đổi sau khi cuốn sách ấn hành. Ví dụ, retry bây giờ làm việc được với while, until và for, cũng như với iterators.
Ví dụ

Lưu ý: Các ví dụ sử dụng chuỗi ký tự Unicode để chạy được cần đặt một biến môi trường là $KCODE="u". Hay là chạy #ruby với tùy chọn là -K u vẫn được. Xem thêm những hạn chế của phiên bản Ruby hiện tại với Unicode tại ruby và unicode Lưu trữ 2005-12-18 tại Wayback Machine
# Mọi thứ, kể cả tầm thường nhất, là một đối tượng. Vì thế những ví dụ dưới đều chạy được:
-199.abs                                       # => 199, abs: giá trị tuyệt đối
"ruby is cool".length                          # => 12
"Rick".index("c")                              # => 2
"Nice Day Isn't It?".split(//).uniq.sort.join  # => " '?DINaceinsty"
Ví dụ > Input

print 'Làm ơn gõ tên >'
name = gets.chomp
puts "Chào #{name}."
Ví dụ > Hội thoại

puts 'Cho tôi con số của bạn'
number = gets.chomp
puts number.to_i
output_number = number.to_i + 1
puts output_number.to_s + ' là một con số lớn hơn.'
Ví dụ > Mảng

Khởi tạo và sử dụng một mảng:
a = [1, 'chào', 3.14, 1, 2, [4, 5]]

a[2]                      # => 3.14
a.reverse                 # => [[4, 5], 2, 1, 3.14, 'chào', 1]
a.flatten.uniq            # => [1, 'chào', 3.14, 2, 4, 5]
Khởi tạo và xây dựng một mảng kết hợp (Ruby gọi là hash):
hash = Hash.new                              # Tương đương với hash = {}
hash = {:water => 'wet',:fire => 'hot'}      # Đoạn mã đầu trở nên dư thừa khi
                                             # đưa cho hash một đối tượng hash riêng biệt mới
puts hash[:fire]                             # Xuất ra "hot"

hash.each_pair do |key, value|               # Hoặc: hash.each do |key, value|
    puts "#{key} is #{value}"
end
# Trả về {:water => 'wet',:fire => 'hot'} và xuất ra:
# water is wet
# fire is hot

hash.delete:water                            # Hủy cặp giá trị:water => 'wet' và trả về "wet"
hash.delete_if {|key, value| value == 'hot'} # Hủy cặp giá trị:fire => 'hot' và trả về {}
Ví dụ > Cấu trúc rẽ nhánh

Mệnh đề If:
# Tạo ra một số ngẫu nhiên và in ra số đó là chẵn hay lẻ.
if rand(100) % 2 == 0
  puts "Là số chẵn"
else
  puts "Là số lẻ"
end
Ví dụ > Block và iterator

2 cách để tạo một đoạn block:
{ puts 'Xin chào, thế giới!' } # lưu ý dấu ngoặc
# hoặc:
do
  puts 'Xin chào, thế giới!'
end
Một block có thể được truyền đến một hàm (method) như một tham số tùy chọn. Nhiều hàm được cài sẵn có tham số như vậy:
File.open('file.txt', 'w') do |file| # 'w' biểu thị "chế độ ghi chép"
  file.puts 'Viết gì đó'
end                                  # Tập tin sẽ tự động đóng ở đây

File.readlines('file.txt').each do |line|
  puts line
end
# => 'Viết gì đó'
Thông số đi qua block để trở thành closure (ví dụ):
# Trong một biến thể hiện đối tượng (biểu thị bằng '@'), hãy lưu block này.
def remember(&p)
    @block = p
end

# Dùng hàm trên, cho block đó một cái tên.
remember {|ten| puts "Xin chào, #{ten}!"}

# Dùng closure (lưu ý rằng điều này không có áp dụng tự do cho các biến khác):!
@block.call("Tèo")  # Xuất ra "Xin chào, Tèo!"
Tạo ra một hàm ẩn danh:
proc {|arg| puts arg}
Proc.new {|arg| puts arg}
lambda {|arg| puts arg}
->(arg) {puts arg}         # được giới thiệu ở Ruby 1.9
Trả về closure từ một hàm:
def create_set_and_get(initial_value=0) # Lưu ý initial_value là 0
  closure_value = initial_value
  [ Proc.new {|x| closure_value = x}, Proc.new { closure_value } ]
end

setter, getter = create_set_and_get  # Trả về hai giá trị
setter.call(21)
getter.call      # => 21

# Biến tham số cũng có thể được sử dụng như là một liên kết cho closure,
# Vậy nên hàm trên có thể được viết lại như sau:

def create_set_and_get(closure_value=0)
  [ proc {|x| closure_value = x }, proc { closure_value } ]
end
Trong một hàm, có thể thay đổi block vào lúc gọi hàm:
def bfs(e)
    q = []
    e.mark
    yield e
    q.push e
    while not q.empty?
      u = q.shift
      u.edge_iterator do |v|
      if not v.marked?
        v.mark
        yield v
        q.push v
      end  
    end
  end
  bfs(e) {|v| puts v}
Duyệt lần lượt trên enumation và mảng bằng cách dùng block:
a = [1, 'chào', 3.14]
a.each {|item| puts item}          # Xuất ra toàn bộ phần tử
(3..6).each {|num| puts num}       # Xuất ra các số từ 3 đến 6
Block cũng có thể dùng với các hàm dựng sẵn:
File.open('taptin.txt', 'w+b') do |taptin|
  taptin.puts 'Viết linh tinh gì đó.'
end                # File được tự động đóng lại tại đây
Hay:
IO.readlines('taptin.txt') do |dòng|
  # Xử lý từng dòng ở đây.
end
Sử dụng enumeration và block để xuất ra lũy thừa 2 của các số từ 1 đến 10:
(1..10).collect {|x| x*x}    => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Ví dụ > Lớp

Đoạn mã sau định nghĩa một lớp tên là Person. Bên cạnh phương thức khởi tạo initialize, là phương thức được gọi đến khi cần tạo đối tượng mới, lớp này còn có 2 phương thức khác: một là ghi đè lên toán tử so sánh <=> (vì thế Array#sort có thể sắp xếp theo tuổi) và hai là là ghi đè lên phương thức to_s (vì thế Kernel#puts có thể định dạng đầu ra của nó). Ở đây, attr_accessor là một ví dụ của meta-programming trong Ruby: nó định nghĩa các phương thức dạng getter và setter của biến thực thể, trong khi attr_reader các phương thức dạng 'getter'. Và, câu lệnh cuối cùng trong một phương thức là giá trị trả về của nó, điều này cho phép bỏ qua lệnh return.
class Person
  attr_reader:name,:age
  def initialize(name, age)
    @name, @age = name, age
  end
  def <=>(person)           # Định nghĩa toán tử so sánh
    @age <=> person.age
  end
  def to_s
    "#{@name} (#{@age})"
  end
end

group = [
  Person.new("Bob", 33),
  Person.new("Chris", 16),
  Person.new("Ash", 23)
]

puts group.sort.reverse
Đoạn mã trên in ra ba tên theo tuổi giảm dần:
Bob (33)
Ash (23)
Chris (16)
Ví dụ > Ngoại lệ

Một trường hợp ngoại lệ được đưa ra với lệnh raise:
raise
Có thể thêm một thông báo tùy chọn:
raise "Đây là một thông báo"
Ngoại lệ cũng có thể xác định bởi các lập trình viên:
raise ArgumentError, "Tranh luận bất hợp pháp!"
Ngoài ra, một thực thể của lớp Ngoại lệ có thể tạo ra được với biến raise như sau:
raise ArgumentError.new("Tham số không phù hợp!")
Ví dụ > Một vài ví dụ

Có thể tìm thấy các code mẫu của Ruby dưới dạng các thuật toán tại:
Exponentiating by squaring
Linear search
Quicksort
Hệ điều hành

Ruby có thể chạy trên các hệ điều hành sau:
Các họ hàng của Unix
DOS
Microsoft Windows 95/98/XP/NT/2000/2003
Mac OS X
BeOS
Amiga
Acorn RISC OS
OS/2
Syllable
Có thể còn thêm một số platform khác.
Chương trình "Hello world"

viết dòng này vào file hello.rb 

puts "chao The gioi"
và chạy thử 

~>ruby hello.rb
Cú pháp

Cú pháp trong Ruby tương tự như Perl and Python. Lớp và phương thức được định nghĩa thông qua các từ khóa, ngoài ra khối (block) còn có thể được định nghĩa bằng cặp dấu ngoặc nhọn {}. Khác với Perl, biến số (variable) không nhất thiết phải bắt đầu bằng dấu $, và nếu sử dụng sẽ thay đổi phạm vi của biến số. Các kí tự xuống dòng (line breaks) cũng như dấu chấm phẩy ; phân chia các mệnh đề (statement) với nhau.
Một trong những điểm khác biệt lớn nhất so với Perl và Python là Ruby ẩn hoàn toàn các biến của thực thể (instance) và chỉ có thể truy cập và chỉnh sửa chúng thông qua các phương thức (như attr_writer, attr_reader).
Các ứng dụng

Ruby Application Archive đóng vai trò là một kho lưu trữ đủ loại ứng dụng và các thư viện viết bằng Ruby, với hàng ngàn mục. Mặc dù số lượng ứng dụng sẵn có không lớn bằng với cộng đồng của Perl hay Python, vẫn có đủ loại công cụ và tiện ích nhằm hỗ trợ cho việc phát triển ngôn ngữ trong tương lai.