English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby 배열은 어떤 객체의 순서대로된 정수 인덱스 집합입니다. 배열의 각 요소는 인덱스와 관련이 있으며, 인덱스를 통해 접근할 수 있습니다.
배열의 인덱스는 0에서 시작하며, C 또는 Java와 같습니다. 음수 인덱스는 배열의 끝에서부터 계산되므로, 인덱스는 -1 배열의 마지막 요소를 나타냅니다.-2 배열의 마지막 두 번째 요소를 나타냅니다. 이와 같이 계속 합니다.
Ruby 배열은 String, Integer, Fixnum, Hash, Symbol 등의 객체를 저장할 수 있으며, 다른 Array 객체도 저장할 수 있습니다。
Ruby 배열은 크기를 지정하지 않아도 됩니다. 배열에 요소를 추가할 때 Ruby 배열은 자동으로 성장합니다。
배열을 생성하거나 초기화하는 방법이 여러 가지 있습니다. 하나의 방법은 다음과 같습니다: new 클래스 메서드:
names = Array.new
배열을 생성하면서 배열의 크기를 설정할 수 있습니다:
names = Array.new(20)
배열 names 의 크기나 길이는 20 개의 요소입니다. size 또는 length 메서드를 사용하여 배열의 크기를 반환할 수 있습니다:
#!/usr/bin/ruby names = Array.new(20) puts names.size # 반환 20 puts names.length # 반환 20
위의 예제 실행 결과는 다음과 같습니다:
20 20
배열의 각 요소에 값을 할당할 수 있습니다. 다음과 같이 사용할 수 있습니다:
#!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}"
위의 예제 실행 결과는 다음과 같습니다:
["mac", "mac", "mac", "mac"]
또한 new를 사용하여 각 요소를 블록의 계산 결과로 채울 수 있습니다:
#!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}"
위의 예제 실행 결과는 다음과 같습니다:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
배열은 또 다른 메서드인 []를 가지고 있습니다. 다음과 같이 사용할 수 있습니다:
nums = Array.[](1, 2, 3, 4,5)
배열 생성의 또 다른 형식은 다음과 같습니다:
nums = Array[1, 2, 3, 4,5]
Ruby 핵심 모듈에서 단일 파라미터를 받는 Array 메서드가 있습니다. 이 메서드는 범위를 파라미터로 사용하여 숫자 배열을 생성합니다:
#!/usr/bin/ruby digits = Array(0..9) puts "#{digits}"
위의 예제 실행 결과는 다음과 같습니다:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Array 메서드를 호출하기 위해 Array 객체의 예제가 필요합니다. Array 객체를 생성하는 방법을 보여드립니다:
Array.[](...) [or] Array[...] [or] [...]
이렇게 하면 지정된 객체를 채운 새로운 배열을 반환합니다. 지정된 객체를 사용하여 어떤 메서드든 호출할 수 있습니다. 예를 들어:
#!/usr/bin/ruby digits = Array(0..9) num = digits.at(6) puts "#{num}"
위의 예제 실행 결과는 다음과 같습니다:
6
아래는 공통된 배열 메서드입니다. (추정) array Array 객체입니다):
순번 | 메서드 & 설명 |
---|---|
1 | array & other_array 두 배열에서 공통된 요소를 포함하는 새로운 배열을 반환합니다. 중복이 없습니다. |
2 | array * int [or] array * int [or] array str |
3 | array + other_array 새로운 배열을 반환합니다. 이 배열은 self의 int 복사본을 연결하여 생성된 것입니다. String 파라미터가 있을 때는 self.join(str)과 동일합니다. |
4 | array - other_array 새로운 배열을 반환합니다. 이 배열은 두 배열을 연결하여 세 번째 배열을 생성한 것입니다. |
5 | 새로운 배열을 반환합니다. 이 배열은 원본 배열에서 other_array에 나타나는 항목을 제거한 복사본입니다. str <=> other_str -1str과 other_str을 비교하여 1(빠르게)、0(같음) 또는 |
6 | array | other_array other_array를 array에 추가하여 중복을 제거하고 새로운 배열을 반환합니다. |
7 | array << obj 지정된 객체를 배열의 마지막에 추가합니다. 이 표현은 배열 자체를 반환하므로, 여러 추가를 연속으로 할 수 있습니다. |
8 | array <=> other_array array가 other_array보다 작거나, 같거나, 크면 정수를 반환합니다 (-1、 0 또는 +1) |
9 | array == other_array 두 배열이 동일한 요소 개수를 가지고, 각 요소가 다른 배열에서 일치하는 요소와 동일하다면 (Object.==에 따라), 그 두 배열은 같습니다. |
10 | array[index] [or] array[start, length] [or] array[range] [or] array.slice(index) [or] array.slice(start, length) [or] array.slice(range) 반환 인덱스 index 의 요소를 반환하거나 start 부터 length 요소의 서브 배열을 반환하거나 range 지정된 서브 배열을 반환합니다. 음수 인덱스는 배열의 끝에서 시작하여 계산됩니다(-1 마지막 요소입니다). 만약 index(또는 시작 인덱스)범위를 벗어났을 경우, 반환 nil。 |
11 | array[index] = obj [or] array[start, length] = obj or an_array or nil [or] array[range] = obj or an_array or nil 를 설정합니다. index 의 요소를 추가하거나, start 부터 length 요소의 서브 배열을 추가하거나, range 지정된 서브 배열입니다. 인덱스가 배열의 현재 용량을 초과하면 배열이 자동으로 증가합니다. 음수 인덱스는 배열의 마지막 부분에서 시작하여 계산됩니다. 인덱스가 length 로 설정된다면. 두 번째나 세 번째 형식에서 nil그렇다면 self 요소를 제거합니다. |
12 | array.abbrev(pattern = nil) 为 self 의 문자열 계산이 명확한 축약 집합입니다. 패턴이나 문자열을 전달할 때, 문자열이 패턴과 일치하거나 해당 문자열로 시작할 때만 고려합니다. |
13 | array.assoc(obj) 검색하며, obj.==을 사용하여 obj를 각 포함된 배열의 첫 번째 요소와 비교합니다. 일치하면 첫 번째 포함된 배열을 반환하며, 일치하지 않으면 반환합니다. nil。 |
14 | array.at(index) 을 반환합니다. 음수 인덱스는 self 의 끝에서 시작하여 계산합니다. 인덱스가 범위를 벗어나면 nil을 반환 |
15 | array.clear 배열에서 모든 요소를 제거합니다. |
16 | array.collect { |item| block } [or] array.map { |item| block } 为 self 의 각 요소에 대해 한 번 호출됩니다. block。创建一个新的数组,包含 block 返回的值。 |
17 | array.collect! { |item| block } [or] array.map! { |item| block } 为 self 의 각 요소에 대해 한 번 호출됩니다. block으로 요소를 대체합니다. block 에서 반환된 값을 제거합니다. |
18 | array.compact 반환 self 의 복사본을 반환하며, 모든 nil 요소를 제거합니다. |
19 | array.compact! 배열에서 모든 nil 변화가 없으면 반환 nil。 |
20 | 요소. array.concat(other_array) self other_array의 요소를 array에 추가합니다. |
21 | 에서. array.delete(obj) [or] 에서 self array.delete(obj) { block } obj 에서 동일한 항목을 제거합니다. nil입니다. 같은 항목을 찾지 못하고 선택적인 코드가 주어지면 block이면 block 결과를 반환합니다. |
22 | array.delete_at(index) 지정된 index 위의 요소를 제거하고 해당 요소를 반환합니다. index가 범위를 벗어나면 반환 nil。 |
23 | array.delete_if { |item| block } 하면 block 이 true일 때, 제거합니다. self 의 각 요소. |
24 | array.each { |item| block } 为 self 의 각 요소에 대해 한 번 호출됩니다. block을 전달합니다. |
25 | array.each_index { |index| block } Array#each와 동일하지만, 요소를 전달합니다. index이며, 요소 자체를 전달하는 대신. |
26 | array.empty? 배열 자체가 요소를 포함하지 않으면 true를 반환합니다. |
27 | array.eql?(other) 만약 array 과 other 는 동일한 객체인지, 또는 두 개의 배열이 동일한 내용을 가지고 있으면 true를 반환합니다. |
28 | array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { |index| block } 위치를 반환합니다. index 위치를 시도하면 index 의 요소를 던집니다. 만약 배열 외부에 위치하면 첫 번째 형식이 IndexError 에러를 반환하며default block 하면 index 을 전달합니다. index 의 값입니다. 음수 값을 입력하면 |
29 | 배열의 마지막 부분에서 시작하여 계산합니다. array.fill(obj) [or] array.fill(obj, start [, length]) [or] array.fill(obj, range) [or] array.fill { |index| block } [or] array.fill(start [, length] ) { |index| block } [or] array.fill(range) { |index| block } self 의 앞 세 가지 형식에서 설정합니다. obj으로 선택된 요소를 nil 의 시작은 0입니다.nil 의 길이는 self.length마지막 세 가지 형식은 block의 값을 사용합니다.을 채웁니다.배열.block 각 요소의 절대 인덱스를 포함한 block을 전달합니다. |
30 | array.first [or] array.first(n) 배열의 첫 번째 요소 또는 앞 n 요소가 있습니다. 배열이 비어 있으면 첫 번째 형식이 반환 nil의 두 번째 형식은 빈 배열을 반환합니다. |
31 | array.flatten 새로운 배열을 반환하며, 이 배열은 일维의 평면화된 배열입니다(재귀적). |
32 | array.flatten! array.reverse array 평면화를 수행합니다. 변화가 없으면 반환 nil。(배열은 서브 배열을 포함하지 않습니다。) |
33 | array.frozen? 만약 array frozen 상태(또는 정렬 중 임시로冻结된 경우)면 true를 반환합니다. |
34 | array.hash 배열의 해시 코드를 계산합니다. 내용이 같은 배열은 같은 해시 코드를 가집니다. |
35 | array.include?(obj) 만약 self 에 포함됩니다. obj면 true를 반환하며, 그렇지 않으면 false를 반환합니다. |
36 | array.index(obj) 반환 self obj에 일치하는 객체의 index미atches를 찾지 못하면 nil。 |
37 | array.indexes(i1, i2, ... iN) [or] array.indices(i1, i2, ... iN) 이 메서드는 Ruby의 최신 버전에서 폐지되었습니다. 따라서 Array#values_at를 사용하십시오. |
38 | array.indices(i1, i2, ... iN) [or] array.indexes(i1, i2, ... iN) 이 메서드는 Ruby의 최신 버전에서 폐지되었습니다. 따라서 Array#values_at를 사용하십시오. |
39 | array.insert(index, obj...) 주어진 index 의 요소 앞에 주어진 값을 삽입합니다. index는 음수 값일 수 있습니다. |
40 | array.inspect 创建一个数组的可打印版本。 |
41 | array.join(sep=$,) 返回一个字符串,通过把数组的每个元素转换为字符串,并使用 sep 分隔进行创建的。 |
42 | array.last [or] array.last(n) 반환 self 的最后一个元素。如果数组为空,则第一种形式返回 nil。 |
43 | array.length 반환 self 中元素的个数。可能为零。 |
44 | array.map { |item| block } [or] array.collect { |item| block } 为 self 的每个元素调用一次 block。创建一个新的数组,包含 block 返回的值。 |
45 | array.map! { |item| block } [or] array.collect! { |item| block } 为 array 的每个元素调用一次 block,把元素替换为 block 返回的值。 |
46 | array.nitems 반환 self 中 non-nil 元素的个数。可能为零。 |
47 | array.pack(aTemplateString) 根据 aTemplateString 中的指令,把数组的内容压缩为二进制序列。指令 A、 a 和 Z 后可以跟一个表示结果字段宽度的数字。剩余的指令也可以带有一个表示要转换的数组元素个数的数字。如果数字是一个星号(*),则所有剩余的数组元素都将被转换。任何指令后都可以跟一个下划线(_),表示指定类型使用底层平台的本地尺寸大小,否则使用独立于平台的一致的尺寸大小。在模板字符串中空格会被忽略。 |
48 | array.pop 에서 array 中移除最后一个元素,并返回该元素。如果 array 为空则返回 nil。 |
49 | array.push(obj, ...) 把给定的 obj 附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起。 |
50 | array.rassoc(key) 搜索一个数组,其元素也是数组,使用 == 把 key 与每个包含的数组的第二个元素进行比较。如果匹配则返回第一个包含的数组。 |
51 | array.reject { |item| block } 返回一个新的数组,包含当 block 不为 true 时的数组项。 |
52 | array.reject! { |item| block } 当 block 为真时,从 array 删除元素,如果没有变化则返回 nil相当于 Array#delete_if。 |
53 | array.replace(other_array) array.reverse array 的内容替换为 other_array array.replace(other_array) |
54 | 의 내용을 대체합니다. other_array |
55 | 의 내용을 필요에 따라 잘라내거나 확장합니다. array.reverse array array.reverse_each {|item| block } |
56 | 역순으로 정렬된 새로운 배열을 포함합니다. array.reverse! array array.reverse_each {|item| block } |
57 | 반전합니다. array.rindex(obj) nil。 |
58 | array.select {|item| block } 배열로부터 연속적인 요소를 전달하여 block을 호출하고, block이 반환한 값을 포함한 배열을 반환합니다. true 값을 가진 요소를 반환합니다. |
59 | array.shift 반환 self 의 첫 번째 요소를 가져와 이 요소를 제거합니다(모든 다른 요소를 한 단계 내려옵니다). 배열이 비어 있으면, 반환 nil。 |
60 | array.size 반환 array 의 길이(요소의 개수)입니다. length의 별명입니다. |
61 | array.slice(index) [또는] array.slice(start, length) [또는] array.slice(range) [또는] array[index] [또는] array[start, length] [또는] array[range] 반환 인덱스 index 의 요소를 반환하거나 start 부터 length 요소의 서브 배열을 반환하거나 range 지정된 서브 배열을 반환합니다. 음수 인덱스는 배열의 끝에서 시작하여 계산됩니다(-1 마지막 요소입니다). 만약 index(또는 시작 인덱스)범위를 벗어났을 경우, 반환 nil。 |
62 | array.slice!(index) [또는] array.slice!(start, length) [또는] array.slice!(range) 삭제 index(길이는 선택 사항입니다)또는 range 지정된 요소를 반환합니다. 삭제된 객체, 서브 배열을 반환하고, 만약 index 범위를 벗어났을 경우, 반환 nil。 |
63 | array.sort [또는] array.sort { |a, b| block } 정렬된 배열을 반환합니다. |
64 | array.sort! [또는] array.sort! { |a, b| block } 배열을 정렬합니다. |
65 | array.to_a 반환 self에서 Array 의 자식 클래스에서 호출되면, 수신된 매개변수를 Array 객체로 변환합니다. |
66 | array.to_ary self를 반환. |
67 | array.to_s self.join을 반환. |
68 | array.transpose self는 배열의 배열을 가정하고, 행과 열을 교환. |
69 | array.uniq 중복을 제거한 새로운 배열을 반환. array 의 중복 값. |
70 | array.uniq! 에서 self 에서 중복 요소를 제거합니다. 변경이 없다면(즉, 중복이 없다면), nil。 |
71 | array.unshift(obj, ...) 객체를 배열의 앞에 배치하고, 다른 요소를 한 자리 상향 이동. |
72 | array.values_at(selector,...) self에서 주어진 selector(한 개 또는 여러 개)의 요소와相对应하는 요소. |
73 | array.zip(arg, ...) [or] array.zip(arg, ...){ | arr | block } 모든 매개변수를 배열로 변환한 후, array 의 요소는 각 매개변수에 해당하는 요소와 결합됩니다. |
아래 표는 메서드 Array#pack의 압축 지시를 나열합니다.
지시 | 설명 |
---|---|
@ | 절대 위치로 이동. |
A | ASCII 문자열(공백으로 채우기, count는 너비). |
a | ASCII 문자열(널로 채우기, count는 너비). |
B | 비트 문자열(내림차순). |
b | 비트 문자열(오름차순). |
C | 미정의된 문자. |
c | 문자. |
D, d | 이진정도 부호 floating-point number, 원시 형식. |
E | 이진정도 부호 floating-point number, little.-endian 바이트 순서 |
e | 단정도 부호 floating-point number, little.-endian 바이트 순서 |
F, f | 단정도 부호 floating-point number, 원시 형식. |
G | 이진정도 부호 floating-point number, 네트워크(big-endian) 바이트 순서. |
g | 단정도 부호 floating-point number, 네트워크(big-endian) 바이트 순서. |
H | 16진수 문자열(상위 숫자 우선). |
h | 16진수 문자열(하위 숫자 우선). |
I | 미정의된 정수. |
i | 정수. |
L | 미정의된 long. |
l | Long. |
M | 출력 가능한, MIME 인코딩을 참조. |
m | Base64 문자열을 인코딩. |
N | Long, 네트워크(big-endian) 바이트 순서. |
n | Short, 네트워크(big-endian) 바이트 순서. |
P | 구조체(고정 길이 문자열)를 가리키는 주소. |
p | 빈 문자열을 가리키는 주소. |
Q, q | 64 비트 숫자. |
S | 미정의된 short. |
s | Short. |
U | UTF-8。 |
u | UU 인코딩 문자열 |
V | Long, little-endian 바이트 순서 |
v | Short, little-endian 바이트 순서 |
w | BER 압축된 정수 \fnm。 |
X | 한 바이트를 더 앞으로 이동합니다。 |
x | NULL 바이트 |
Z | a와 동일하지만 null은 추가됩니다 *。 |
다음 예제를 시도하여 다양한 데이터를 압축하세요。
a = [ "a", "b", "c" ] n = [ 65, 66, 67 ] puts a.pack("A3A3A3) #=> "a b c " puts a.pack("a3a3a3} puts n.pack("ccc") #=> "ABC"
위의 예제 실행 결과는 다음과 같습니다:
a b c abc ABC