Ruby - Các chức năng tích hợp
Vì mô-đun Kernel được bao gồm bởi lớp Object , các phương thức của nó có sẵn ở mọi nơi trong chương trình Ruby. Chúng có thể được gọi mà không cần bộ thu (dạng chức năng). Do đó, chúng thường được gọi là hàm.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | abort Chấm dứt chương trình. Nếu một ngoại lệ được đưa ra (ví dụ: $! Not nil), thông báo lỗi của nó sẽ được hiển thị. |
2 | Array( obj) Trả về obj sau khi chuyển đổi nó thành một mảng bằng cách sử dụng to_ary hoặc to_a. |
3 | at_exit {...} Đăng ký một khối để thực thi khi chương trình thoát. Tương tự như câu lệnh END, nhưng câu lệnh END chỉ đăng ký khối một lần. |
4 | autoload( classname, file) Đăng ký tên lớp lớp sẽ được tải từ tệp lần đầu tiên nó được sử dụng. tên lớp có thể là một chuỗi hoặc một ký hiệu. |
5 | binding Trả về các ràng buộc của biến và phương thức hiện tại. Các Ràng buộc đối tượng được trả về có thể được truyền cho eval phương pháp như là đối số thứ hai. |
6 | block_given? Trả về true nếu phương thức được gọi với một khối . |
7 | callcc {| c|...} Truyền một đối tượng Tiếp tục c đến khối và thực thi khối. callcc có thể được sử dụng cho lối ra toàn cục hoặc cấu trúc vòng lặp. |
số 8 | caller([ n]) Trả về ngăn xếp thực thi hiện tại trong một mảng các chuỗi trong tệp biểu mẫu : line . Nếu n được chỉ định, trả về các mục ngăn xếp từ cấp thứ n trở xuống. |
9 | catch( tag) {...} Bắt một lối thoát phi địa phương bằng một lần ném được gọi trong quá trình thực thi khối của nó. |
10 | chomp([ rs = $/]) Trả về giá trị của biến $_ with the ending newline removed, assigning the result back to $_ Giá trị của chuỗi dòng mới có thể được chỉ định bằng rs. |
11 | chomp!([ rs = $/]) Xóa dòng mới khỏi $ _, sửa đổi chuỗi tại chỗ. |
12 | chop Trả về giá trị của $_ with its last character (one byte) removed, assigning the result back to $_ |
13 | chop! Xóa ký tự cuối cùng khỏi $ _, sửa đổi chuỗi tại chỗ. |
14 | eval( str[, scope[, file, line]]) Thực thi str dưới dạng mã Ruby. Ràng buộc để thực hiện đánh giá có thể được xác định với phạm vi . Tên tệp và số dòng của mã được biên dịch có thể được chỉ định bằng cách sử dụng tệp và dòng. |
15 | exec( cmd[, arg...]) Thay thế tiến trình hiện tại bằng cách chạy lệnh cmd . Nếu nhiều đối số được chỉ định, lệnh sẽ được thực hiện mà không cần mở rộng trình bao. |
16 | exit([ result = 0]) Thoát khỏi chương trình, với kết quả là mã trạng thái được trả về. |
17 | exit!([ result = 0]) Giết chương trình bỏ qua các xử lý thoát như ensure , v.v. |
18 | fail(...) Xem tăng (...) |
19 | Float( obj) Trả về obj sau khi chuyển đổi nó thành float. Các đối tượng dạng số được chuyển đổi trực tiếp; nil được chuyển đổi thành 0,0; chuỗi được chuyển đổi xem xét tiền tố cơ số 0x, 0b. Phần còn lại được chuyển đổi bằng cách sử dụng obj.to_f. |
20 | fork fork {...} Tạo một quy trình con. nil được trả về trong quy trình con và ID (số nguyên) của quy trình con được trả về trong quy trình mẹ. Nếu một khối được chỉ định, nó sẽ chạy trong tiến trình con. |
21 | format( fmt[, arg...]) Xem sprintf. |
22 | gets([ rs = $/]) Đọc tên tệp được chỉ định trong dòng lệnh hoặc một dòng từ đầu vào chuẩn. Chuỗi phân tách bản ghi có thể được chỉ định rõ ràng bằng rs. |
23 | global_variables Trả về một mảng tên biến toàn cục. |
24 | gsub( x, y) gsub( x) {...} Thay thế tất cả các chuỗi khớp với x trong $_ with y. If a block is specified, matched strings are replaced with the result of the block. The modified result is assigned to $_ |
25 | gsub!( x, y) gsub!( x) {...} Thực hiện thay thế tương tự như gsub, ngoại trừ chuỗi được thay đổi tại chỗ. |
26 | Integer( obj) Trả về obj sau khi chuyển đổi nó thành số nguyên. Các đối tượng dạng số được chuyển đổi trực tiếp; nil được chuyển thành 0; chuỗi được chuyển đổi xem xét tiền tố cơ số 0x, 0b. Phần còn lại được chuyển đổi bằng cách sử dụng obj.to_i. |
27 | lambda {| x|...} proc {| x|...} lambda proc Chuyển đổi một khối thành một đối tượng Proc . Nếu không có khối nào được chỉ định, khối liên kết với phương thức gọi sẽ được chuyển đổi. |
28 | load( file[, private = false]) Tải chương trình Ruby từ tệp . Không giống như yêu cầu , nó không tải các thư viện mở rộng. Nếu private là true , chương trình được tải vào một mô-đun ẩn danh, do đó bảo vệ không gian tên của chương trình đang gọi. |
29 | local_variables Trả về một mảng tên biến cục bộ. |
30 | loop {...} Lặp lại một khối mã. |
31 | open( path[, mode = "r"]) open( path[, mode = "r"]) {| f|...} Mở tệp . Nếu một khối được chỉ định, khối đó được thực thi với luồng đã mở được truyền dưới dạng đối số. Tệp được đóng tự động khi khối thoát. Nếu đường dẫn bắt đầu bằng dấu ngoặc kép |, chuỗi sau được chạy dưới dạng lệnh và luồng liên kết với quá trình đó được trả về. |
32 | p( obj) Hiển thị đối tượng bằng cách sử dụng phương pháp kiểm tra của nó (thường được sử dụng để gỡ lỗi). |
33 | print([ arg...]) Bản in tranh luận với $ defout . Nếu không có đối số nào được chỉ định, giá trị của $ _ sẽ được in. |
34 | printf( fmt[, arg...]) Định dạng lập luận theo fmt bằng cách sử dụng sprintf và in kết quả ra $ defout . Để biết thông số kỹ thuật định dạng, hãy xem sprintf để biết chi tiết. |
35 | proc {| x|...} proc Xem lamda. |
36 | putc( c) In một ký tự vào đầu ra mặc định ( $ defout ). |
37 | puts([ str]) In chuỗi vào đầu ra mặc định ( $ defout ). Nếu chuỗi không kết thúc bằng một dòng mới, một dòng mới sẽ được nối vào chuỗi. |
38 | raise(...) fail(...) Nâng cao một ngoại lệ. Giả sử RuntimeError nếu không có lớp ngoại lệ nào được chỉ định. Việc gọi raise mà không có đối số trong mệnh đề cứu sẽ làm tăng ngoại lệ. Làm như vậy bên ngoài điều khoản cứu sẽ gây ra lỗi RuntimeError không có thông báo .fail là một cái tên lỗi thời để tăng lương. |
39 | rand([ max = 0]) Tạo một số giả ngẫu nhiên lớn hơn hoặc bằng 0 và nhỏ hơn giá trị tối đa. Nếu tối đa không được chỉ định hoặc được đặt thành 0, một số ngẫu nhiên được trả về dưới dạng số dấu phẩy động lớn hơn hoặc bằng 0 và nhỏ hơn 1. srand có thể được sử dụng để khởi tạo luồng giả ngẫu nhiên. |
40 | readline([ rs = $/]) Tương đương với get ngoại trừ nó làm tăng ngoại lệ EOFError khi đọc EOF. |
41 | readlines([ rs = $/]) Trả về một mảng chuỗi chứa tên tệp được chỉ định làm đối số dòng lệnh hoặc nội dung của đầu vào chuẩn. |
42 | require( lib) Tải lib thư viện (bao gồm cả các thư viện mở rộng) khi nó được gọi lần đầu tiên. Yêu cầu sẽ không tải cùng một thư viện nhiều hơn một lần. Nếu không có phần mở rộng nào được chỉ định trong lib , hãy cố gắng thêm .rb, .so, v.v. vào nó. |
43 | scan( re) scan( re) {|x|...} Tương đương với $ _. Scan. |
44 | select( reads[, writes = nil[, excepts = nil[, timeout = nil]]]) Kiểm tra các thay đổi trong trạng thái của ba loại đối tượng IO đầu vào, đầu ra và ngoại lệ được chuyển dưới dạng mảng của các đối tượng IO. nil được chuyển cho các đối số không cần kiểm tra. Một mảng ba phần tử chứa các mảng của các đối tượng IO đã có các thay đổi về trạng thái được trả về. nil được trả lại vào thời gian chờ. |
45 | set_trace_func( proc) Đặt một trình xử lý để truy tìm. proc có thể là một chuỗi hoặc đối tượng proc . set_trace_func được sử dụng bởi trình gỡ lỗi và trình biên dịch. |
46 | sleep([ sec]) Tạm dừng thực thi chương trình trong vài giây. Nếu giây không được chỉ định, chương trình sẽ bị tạm ngưng vĩnh viễn. |
47 | split([ sep[, max]]) Tương đương với $ _. Split. |
48 | sprintf( fmt[, arg...]) format( fmt[, arg...]) Trả về một chuỗi trong đó đối số được định dạng theo fmt. Các thông số kỹ thuật định dạng về cơ bản giống như các thông số kỹ thuật cho sprintf trong ngôn ngữ lập trình C. Các chỉ định chuyển đổi (% theo sau là chỉ định trường chuyển đổi) trong fmt được thay thế bằng chuỗi được định dạng của đối số tương ứng. Dưới đây là danh sách các chuyển đổi đã nộp trong phần tiếp theo. |
49 | srand([ seed]) Khởi tạo một mảng số ngẫu nhiên. Nếu hạt giống không được chỉ định, quá trình khởi tạo được thực hiện bằng cách sử dụng thời gian và thông tin hệ thống khác cho hạt giống. |
50 | String( obj) Trả về obj sau khi chuyển đổi nó thành một chuỗi bằng cách sử dụng obj.to_s. |
51 | syscall( sys[, arg...]) Gọi một chức năng gọi của hệ điều hành được chỉ định bởi hệ thống số . Số lượng và ý nghĩa của sys phụ thuộc vào hệ thống. |
52 | system( cmd[, arg...]) Thực thi cmd như một lời gọi đến dòng lệnh. Nếu nhiều đối số được chỉ định, lệnh sẽ được chạy trực tiếp mà không cần mở rộng trình bao. Trả về true nếu trạng thái trả về là 0 (thành công). |
53 | sub( x, y) sub( x) {...} Thay thế chuỗi đầu tiên khớp x trong $ _ bằng y. Nếu một khối được chỉ định, các chuỗi phù hợp sẽ được thay thế bằng kết quả của khối. Kết quả đã sửa đổi được gán cho $ _. |
54 | sub!( x, y) sub!( x) {...} Thực hiện thay thế tương tự như sub, ngoại trừ chuỗi được thay đổi tại chỗ. |
55 | test( test, f1[, f2]) Thực hiện các kiểm tra tệp khác nhau được chỉ định bởi kiểm tra ký tự . Để cải thiện khả năng đọc, bạn nên sử dụng các phương thức của lớp Tệp (ví dụ: Tệp :: có thể đọc được?) Thay vì hàm này. Danh sách các đối số được đưa ra bên dưới trong phần tiếp theo. |
56 | throw( tag[, value = nil]) Chuyển đến hàm bắt đang chờ với biểu tượng hoặc thẻ chuỗi . value là giá trị trả về được sử dụng bởi catch . |
57 | trace_var( var, cmd) trace_var( var) {...} Đặt theo dõi cho một biến toàn cục. Tên biến được chỉ định dưới dạng ký hiệu. cmd có thể là một chuỗi hoặc đối tượng Proc. |
58 | trap( sig, cmd) trap( sig) {...} Đặt một trình xử lý tín hiệu. sig có thể là một chuỗi (như SIGUSR1) hoặc một số nguyên. SIG có thể bị bỏ qua khỏi tên tín hiệu. Bộ xử lý tín hiệu cho tín hiệu EXIT hoặc tín hiệu số 0 được gọi ngay trước khi kết thúc quá trình. |
59 | untrace_var( var[, cmd]) Xóa truy tìm biến toàn cục. Nếu cmd được chỉ định, chỉ lệnh đó bị loại bỏ. |
Hàm cho số
Đây là danh sách các Hàm tích hợp liên quan đến số. Chúng nên được sử dụng như sau:
#!/usr/bin/ruby
num = 12.40
puts num.floor # 12
puts num + 10 # 22.40
puts num.integer? # false as num is a float.
Điều này sẽ tạo ra kết quả sau:
12
22.4
false
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | n + num n - num n * num n / num Thực hiện các phép tính số học: cộng, trừ, nhân và chia. |
2 | n % num Trả về môđun của n. |
3 | n ** num Luỹ thừa. |
4 | n.abs Trả về giá trị tuyệt đối của n. |
5 | n.ceil Trả về số nguyên nhỏ nhất lớn hơn hoặc bằng n. |
6 | n.coerce( num) Trả về một mảng chứa num và n có thể được chuyển đổi thành một kiểu cho phép chúng hoạt động lẫn nhau. Được sử dụng trong chuyển đổi kiểu tự động trong toán tử số. |
7 | n.divmod( num) Trả về một mảng chứa thương và môđun từ phép chia n cho num. |
số 8 | n.floor Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng n. |
9 | n.integer? Trả về true nếu n là số nguyên. |
10 | n.modulo( num) Trả về mô đun thu được bằng cách chia n cho num và làm tròn thương số với sàn |
11 | n.nonzero? Trả về n nếu nó không phải là 0, ngược lại là nil. |
12 | n.remainder( num) Trả về phần còn lại thu được bằng cách chia n bởi numvà xóa số thập phân khỏi thương số. Cácresult và n luôn luôn có cùng một dấu hiệu. |
13 | n.round Trả về n được làm tròn thành số nguyên gần nhất. |
14 | n.truncate Trả về n dưới dạng số nguyên đã xóa số thập phân. |
15 | n.zero? Trả về 0 nếu n là 0. |
16 | n & num n | num n ^ num Các phép toán theo chiều bit: VÀ, HOẶC, XOR và đảo ngược. |
17 | n << num n >> num Dịch trái bit và dịch chuyển phải. |
18 | n[num] Trả về giá trị của numbit thứ từ bit quan trọng nhất, là n [0]. |
19 | n.chr Trả về một chuỗi chứa ký tự cho mã ký tự n. |
20 | n.next n.succ Trả về số nguyên tiếp theo sau n. Tương đương với n + 1. |
21 | n.size Trả về số byte trong biểu diễn máy của n. |
22 | n.step( upto, step) {|n| ...} Lặp lại khối từ n đến upto, tăng dần bởi step mỗi lần. |
23 | n.times {|n| ...} Lặp lại khối n lần. |
24 | n.to_f Chuyển đổi nthành một số dấu phẩy động. Chuyển đổi phao có thể làm mất thông tin chính xác. |
25 | n.to_int Lợi nhuận n sau khi chuyển đổi thành số interger. |
Các chức năng cho Float
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | Float::induced_from(num) Trả về kết quả chuyển đổi num thành số dấu phẩy động. |
2 | f.finite? Trả về true nếu f không phải là vô hạn và f.nan là false. |
3 | f.infinite? Trả về 1 nếu f là dương vô cùng, -1 nếu âm ở vô cùng hoặc nil nếu khác. |
4 | f.nan? Trả về true nếu f không phải là số dấu phẩy động IEEE hợp lệ. |
Các hàm cho Toán học
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | atan2( x, y) Tính tiếp tuyến của cung. |
2 | cos( x) Tính cosin của x. |
3 | exp( x) Calculates an exponential function (e raised to the power of x). |
4 | frexp( x) Returns a two-element array containing the nominalized fraction and exponent of x. |
5 | ldexp( x, exp) Returns the value of x times 2 to the power of exp. |
6 | log( x) Calculates the natural logarithm of x. |
7 | log10( x) Calculates the base 10 logarithm of x. |
8 | sin( x) Calculates the sine of x. |
9 | sqrt( x) Returns the square root of x. x must be positive. |
10 | tan( x) Calculates the tangent of x. |
Conversion Field Specifier
The function sprintf( fmt[, arg...]) and format( fmt[, arg...]) returns a string in which arg is formatted according to fmt. Formatting specifications are essentially the same as those for sprintf in the C programming language. Conversion specifiers (% followed by conversion field specifier) in fmt are replaced by formatted string of corresponding argument.
Sr.No. | Specifier & Description |
---|---|
1 | b Binary integer |
2 | c Single character |
3 | d,i Decimal integer |
4 | e Exponential notation (e.g., 2.44e6) |
5 | E Exponential notation (e.g., 2.44E6) |
6 | f Floating-point number (e.g., 2.44) |
7 | g use %e if exponent is less than -4, %f otherwise |
8 | G use %E if exponent is less than -4, %f otherwise |
9 | o Octal integer |
10 | s String or any object converted using to_s |
11 | u Unsigned decimal integer |
12. | x Hexadecimal integer (e.g., 39ff) |
13 | X Hexadecimal integer (e.g., 39FF) |
Following is the usage example −
#!/usr/bin/ruby
str = sprintf("%s\n", "abc") # => "abc\n" (simplest form)
puts str
str = sprintf("d=%d", 42) # => "d=42" (decimal output)
puts str
str = sprintf("%04x", 255) # => "00ff" (width 4, zero padded)
puts str
str = sprintf("%8s", "hello") # => " hello" (space padded)
puts str
str = sprintf("%.2s", "hello") # => "he" (trimmed by precision)
puts str
This will produce the following result −
abc
d = 42
00ff
hello
he
Test Function Arguments
The function test( test, f1[, f2]) performs one of the following file tests specified by the character test. In order to improve readability, you should use File class methods (for example, File::readable?) rather than this function.
Sr.No. | Argument & Description |
---|---|
1 | ?r Is f1 readable by the effective uid of caller? |
2 | ?w Is f1 writable by the effective uid of caller? |
3 | ?x Is f1 executable by the effective uid of caller? |
4 | ?o Is f1 owned by the effective uid of caller? |
5 | ?R Is f1 readable by the real uid of caller? |
6 | ?W Is f1 writable by the real uid of caller? |
7 | ?X Is f1 executable by the real uid of caller? |
8 | ?O Is f1 owned by the real uid of caller? |
9 | ?e Does f1 exist? |
10 | ?z Does f1 have zero length? |
11 | ?s File size of f1(nil if 0) |
12 | ?f Is f1 a regular file? |
13 | ?d Is f1 a directory? |
14 | ?l Is f1 a symbolic link? |
15 | ?p Is f1 a named pipe (FIFO)? |
16 | ?S Is f1 a socket? |
17 | ?b Is f1 a block device? |
18 | ?c Is f1 a character device? |
19 | ?u Does f1 have the setuid bit set? |
20 | ?g Does f1 have the setgid bit set? |
21 | ?k Does f1 have the sticky bit set? |
22 | ?M Last modification time for f1. |
23 | ?A Last access time for f1. |
24 | ?C Last inode change time for f1. |
Sr.No. | Argument & Description |
---|---|
1 | ?= Are modification times of f1 and f2 equal? |
2 | ?> Is the modification time of f1 more recent than f2 ? |
3 | ?< Is the modification time of f1 older than f2 ? |
4 | ?- Is f1 a hard link to f2 ? |
Following is the usage example. Assuming main.rb exist with read, write and not execute permissions −
#!/usr/bin/ruby
puts test(?r, "main.rb" ) # => true
puts test(?w, "main.rb" ) # => true
puts test(?x, "main.rb" ) # => false
This will produce the following result −
true
false
false