웹사이트 검색

Ruby의 데이터 유형 이해


소개

프로그램을 작성할 때 데이터 유형을 사용하여 데이터를 분류합니다. 데이터 유형은 프로그램에서 데이터를 처리하는 방법을 컴퓨터에 알려줍니다. 또한 수행할 수 있는 작업을 포함하여 데이터로 수행할 수 있는 작업을 결정합니다.

데이터 유형에 대해 생각하는 한 가지 방법은 우리가 실생활에서 사용하는 다양한 유형의 데이터를 고려하는 것입니다. 예를 들어 정수(0, 1, 2, …), 정수(…, -1, 0, 1, …) 및 무리수(π)를 사용합니다.

일반적으로 수학에서는 다양한 유형의 숫자를 결합하여 일종의 답을 얻을 수 있습니다. 예를 들어 π에 5를 더할 수 있습니다.

5 + π

무리수를 설명하기 위한 답으로 방정식을 유지하거나 π를 소수점 이하 자릿수가 짧은 숫자로 반올림한 다음 숫자를 더할 수 있습니다.

5 + π = 5 + 3.14 = 8.14

그러나 단어와 같은 다른 데이터 유형으로 숫자를 평가하려고 하면 상황이 덜 이해되기 시작합니다. 다음 방정식을 어떻게 풀까요?

sky + 8

이것은 우리가 해결 방법을 즉시 아는 것이 아닙니다. 데이터가 두 가지 다른 유형이기 때문에 컴퓨터도 할 수 없습니다. "Sky\는 단어이고 8은 정수입니다. 프로그램을 작성할 때 값을 할당하는 방법과 덧셈, 뺄셈, 곱셈과 같은 연산을 통해 값을 조작하는 방법에 주의해야 합니다. , 다른 사람.

이 튜토리얼에서는 Ruby 고유의 가장 중요한 데이터 유형인 정수, 부동 소수점, 문자열, 기호, 배열 및 해시에 대해 배웁니다. 이것은 데이터 유형에 대한 철저한 조사는 아니지만 프로그램에서 사용할 수 있는 옵션에 익숙해지는 데 도움이 됩니다.

그런 다음 동적 타이핑을 살펴봅니다. Ruby 프로그램은 변수에 포함된 내용을 기반으로 데이터 유형을 결정하므로 동적 유형 지정이 작동하는 방식을 이해하면 자신의 프로그램에서 까다로운 상황을 피하는 데 도움이 됩니다. 변수에는 모든 값이 포함될 수 있으므로 변수의 데이터 유형을 식별하는 방법을 배웁니다.

Ruby에서 정수로 작업하는 방법부터 살펴보겠습니다.

정수

수학에서와 마찬가지로 컴퓨터 프로그래밍의 정수는 양수, 음수 또는 0(…, -1, 0, < 코드>1, …). 정수는 일반적으로 int라고도 합니다.

다음과 같이 정수를 출력할 수 있습니다.

print -25
Output
-25

변수에 정수를 저장한 다음 변수를 참조하여 값을 인쇄할 수도 있습니다.

my_int = -25
print my_int
Output
-25

정수로도 수학을 할 수 있습니다. 예를 들어 두 숫자의 합을 계산하고 결과를 출력할 수 있습니다.

sum = 116 - 68
print sum
Output
48

우리는 큰 숫자를 쓸 때 읽기 쉽도록 쉼표를 사용하는 경향이 있습니다. 예를 들어 "100만\에 대해 1,000,000을 씁니다. 코드에 쉼표를 사용할 수 없지만 Ruby에서는 밑줄(_) 문자를 사용할 수 있습니다. 큰 숫자를 더 읽기 쉽게 만들기 위해.

시도해 보세요:

large_number = 1_234_567
print large_number

밑줄 없이 인쇄된 정수를 볼 수 있습니다.

Output
1234567

밑줄을 사용하면 프로그램에서 큰 숫자를 나타내야 하는 경우 더 읽기 쉬운 코드를 작성할 수 있습니다.

Ruby 언어에 대해 더 많이 배우면 정수로 작업할 수 있는 더 많은 기회가 생깁니다. 실수로 작업하는 방법을 살펴보겠습니다.

부동 소수점 숫자

부동 소수점 숫자 또는 부동 소수점실제 숫자를 나타냅니다. 실수는 유리수이거나 무리수일 수 있습니다. 9.0 또는 -116.42와 같이 소수 부분이 포함된 숫자. 즉, Ruby 프로그램의 float는 소수점을 포함하는 숫자입니다.

정수를 인쇄하는 것처럼 Ruby에서 부동 소수점을 인쇄할 수 있습니다.

print 17.3
Output
17.3

변수를 선언하고 float를 할당할 수도 있습니다.

my_float = 17.3
print my_float
Output
17.3

그리고 정수와 마찬가지로 Ruby에서도 부동 소수점으로 수학을 할 수 있습니다.

sum = 564.0 + 365.24
print sum
Output
929.24

Ruby에서 정수에 실수를 추가하면 실수를 얻게 됩니다.

sum = 564 + 365.24
print sum
Output
929.24

Ruby는 소수점 없이 쓰여진 모든 숫자를 정수(138에서와 같이)로 간주하고 소수점으로 쓰여진 모든 숫자를 부동 소수점으로 간주합니다(138.0에서처럼).

다음으로 Ruby의 부울을 살펴보겠습니다.

부울 데이터 유형

부울은 컴퓨터 과학의 알고리즘에 정보를 제공하는 수학의 논리 분기와 관련된 진리 값을 나타내는 데 사용됩니다. Ruby에서는 true 또는 false의 두 값 중 하나로 이 데이터 유형을 나타냅니다.

수학의 많은 연산은 참 또는 거짓으로 평가되는 답을 제공합니다.

  • 보다 큼
  • 500 > 100 <코드>참
  • 1 > 5 거짓
  • 미만
  • 200 < 400 <코드>참
  • 4 < 2 거짓
  • 같음
  • 5=5
  • 500=400 거짓

숫자와 마찬가지로 변수에 true 또는 false 값을 저장할 수 있습니다.

result = 5 > 8

그런 다음 print() 함수를 호출하여 부울 값을 인쇄할 수 있습니다.

print result

5는 8보다 크지 않으므로 다음과 같은 결과가 표시됩니다.

Output
false

Ruby에서 더 많은 프로그램을 작성할수록 부울이 작동하는 방식과 true 또는 false로 평가되는 다양한 함수 및 연산이 프로그램 과정을 어떻게 변경할 수 있는지에 대해 더 잘 알게 될 것입니다. .

다음으로 프로그램에서 텍스트로 작업하는 방법을 살펴보겠습니다.

문자열

문자열은 문자, 숫자 및 기호와 같은 하나 이상의 문자 시퀀스입니다. Ruby에서 문자열은 주로 작은따옴표() 또는 큰따옴표(\) 안에 존재하므로 문자열을 만들려면 다음과 같이 일련의 문자를 따옴표로 묶습니다.

"This is a string in double quotes."

작은 프로그램 "Hello, World!\ Hello, World! 문구를 구성하는 문자가 문자열이므로 문자열이 컴퓨터 프로그래밍에서 어떻게 사용될 수 있는지 보여줍니다.

print "Hello, World!"

다른 데이터 유형과 마찬가지로 변수에 문자열을 저장할 수 있습니다.

output = "Hello, World!"

그리고 변수를 호출하여 문자열을 출력합니다.

print output
Output
Hello, World!

숫자와 마찬가지로 프로그램 내에서 문자열을 조작하여 원하는 결과를 얻기 위해 문자열에 대해 수행할 수 있는 작업이 많이 있습니다. 문자열은 사용자에게 정보를 전달하고 사용자가 정보를 프로그램에 다시 전달하는 데 중요합니다.

때로는 데이터 목록으로 작업해야 합니다. 배열이 유용한 곳입니다.

어레이

배열은 단일 변수 내에 여러 값을 보유할 수 있습니다. 이는 배열 내에 값 목록을 포함하고 이를 통해 반복할 수 있음을 의미합니다. 배열 내부에 있는 각 항목 또는 값을 요소라고 합니다.

배열은 쉼표로 구분된 대괄호 [ ] 사이에 값을 지정하여 정의됩니다.

정수 배열은 다음과 같습니다.

[-3, -2, -1, 0, 1, 2, 3]

플로트 배열은 다음과 같습니다.

[3.14, 9.23, 111.11, 312.12, 1.05]

문자열 목록은 다음과 같습니다.

['shark', 'cuttlefish', 'squid', 'mantis shrimp']

다른 데이터 유형과 마찬가지로 배열을 변수에 할당할 수 있습니다.

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']

변수를 출력하면 출력은 우리가 만든 배열과 정확히 같습니다.

print sea_creatures
['shark', 'cuttlefish', 'squid', 'mantis shrimp']

0부터 시작하는 인덱스 번호를 사용하여 배열의 개별 요소에 액세스합니다.

puts sea_creatures[0] # shark
puts sea_creatures[2] # squid

마지막 값을 출력하려면 색인 -1을 사용할 수 있습니다. Ruby는 각각 첫 번째 항목과 마지막 항목을 가져오는 .first 및 .last 메서드도 제공합니다.

puts sea_creatures.first # shark
puts sea_creatures.last # mantis shrimp

Ruby의 배열은 다양한 유형의 데이터를 가질 수 있습니다. 문자열, 기호 및 기타 배열을 배열에 저장할 수 있습니다.

record = [
:en,
"Sammy",
42,
[
"coral",
"reef"
]
]

Ruby의 배열은 변경 가능하므로 값을 추가하고 제거할 수 있으며 배열의 항목을 수정할 수도 있습니다.

때로는 프로그램에서 레이블을 지정하는 방법이 필요합니다. 그것이 상징의 목적입니다.

기호

기호는 Ruby 프로그램에서 레이블 또는 식별자처럼 작동하는 특수 데이터 유형입니다. 기호는 불변이므로 변경할 수 없습니다. 기호는 값이 없는 변수 선언처럼 보입니다. 다음은 기호의 예입니다.

:time_zone

Ruby에서는 일반적으로 중요한 것을 식별하기 위해 기호를 사용하는 반면 작업하거나 조작해야 하는 텍스트에는 문자열을 사용합니다. Ruby 프로그램의 각 문자열은 문자열이 동일하더라도 메모리에서 고유한 위치를 갖는 자체 개체입니다.

그러나 동일한 기호를 여러 번 참조하는 경우 프로그램의 모든 곳에서 동일한 개체를 참조하는 것입니다. 즉, 동일한 메모리 위치를 참조하는 것입니다.

키와 값을 연결할 수 있는 해시를 살펴보면 이 개념이 실제로 작동하는 것을 볼 수 있습니다.

해시

해시는 사전과 같은 키와 값의 모음입니다. 이러한 키-값 쌍은 데이터를 저장하고 액세스하는 유용한 방법을 제공합니다. 해시는 종종 사용자에 대한 정보와 같은 관련 데이터를 보유하는 데 사용됩니다. 다음과 같이 해시를 정의합니다.

{"first_name" => "Sammy", "last_name" => "Shark"}

다른 데이터 유형과 마찬가지로 변수에 해시를 할당할 수 있습니다.

user = {"first_name" => "Sammy", "last_name" => "Shark"}

user 해시에서 값을 검색하려면 값에 대한 키를 사용합니다.

print user["first_name"] # "Sammy"
print user["last_name"] # "Shark"

문자열 대신 기호를 해시의 키로 사용할 수 있습니다.

user = {:first_name => "Sammy", :last_name => "Shark"}

가능하면 기호를 해시 키로 사용하는 것이 좋습니다. 기호의 모든 인스턴스는 동일한 개체를 가리키는 반면 문자열의 각 인스턴스는 고유한 개체를 참조합니다. 기호를 키로 사용하면 성능이 약간 향상되고 메모리 사용량이 줄어듭니다.

기호를 키로 사용하는 경우 기호를 사용하여 값을 검색합니다.

print user[:first_name] # "Sammy"
print user[:last_name] # "Shark"

해시를 정의할 때 약간 다른 구문을 사용할 수도 있습니다.

user = {first_name: "Sammy", last_name: "Shark"}

이 구문은 JavaScript 및 기타 언어에서 사용되는 구문과 유사합니다. 이 구문은 키를 기호로 정의하므로 \first_name\ 및 < 문자열 대신 :first_name:last_name을 사용하여 항목에 액세스합니다. 코드>성_이름.

여러 데이터 유형을 살펴보았으므로 Ruby가 해당 유형과 어떻게 작동하는지 살펴보겠습니다.

동적 타이핑

Ruby에서는 값을 할당하기 전에 데이터 유형을 명시적으로 선언하지 않습니다. 값을 할당하면 데이터 유형이 결정됩니다. Ruby는 동적 타이핑을 사용합니다. 즉, 정적 타이핑을 사용하는 언어에서와 같이 컴파일 시간이 아닌 런타임에 유형 검사가 수행됩니다. Ruby는 변수에 저장된 데이터에서 데이터 유형을 결정합니다. 이는 JavaScript의 데이터 유형과 유사합니다.

다음 예제의 변수 t는 사용 가능한 모든 데이터 유형으로 설정할 수 있습니다.

t = 42 # t is an Integer
t = "Sammy" # t is a String
t = :sammy # t is a Symbol
t = true # t is a boolean (true)
t # t is nil

동적 유형 언어를 사용하면 기존 변수를 재사용하여 다른 데이터 유형을 보유할 수 있습니다.

이는 데이터를 한 유형에서 다른 유형으로 변환할 때 유용합니다. 예를 들어 사용자에게 숫자 값을 묻는 다음 코드가 있을 수 있습니다.

print "Please enter the length of the room: "
length = gets.chop

키보드에서 얻는 데이터는 항상 문자열이므로 수학 연산을 수행하려면 length 변수의 데이터를 숫자로 변환해야 합니다. 변수에 값을 할당하기 전에 변수의 데이터 유형을 선언해야 하는 정적 유형 언어에서는 변환된 데이터를 보유할 새 변수가 필요합니다. 그러나 Ruby에서는 동적으로 입력되기 때문에 원하는 경우 length 변수를 재사용할 수 있습니다.

# Convert the amount to a Float.
length = length.to_f

to_f 메소드는 문자열을 float로 변환합니다. Ruby는 또한 문자열을 정수로 변환하는 to_i 메서드를 제공하며 대부분의 개체는 to_s 메서드를 사용하여 문자열로 변환할 수 있습니다.

42.to_s # "42"
(42.5).to_s # "42.5"
["Sammy", "Shark"].to_s # "[\"Sammy\", \"Shark\"]"

Ruby는 동적으로 유형이 지정되지만 동일한 유형으로 변환하지 않고는 다른 유형의 데이터에 대한 작업을 수행할 수 없습니다. 예를 들어 다음 코드는 오류를 발생시킵니다.

print 5 + "5"
Output
TypeError: String can't be coerced into Integer

이 코드도 마찬가지입니다.

print "5" + 5
Output
TypeError: no implicit conversion of Integer into String

숫자를 더하여 10을 얻으려면 문자열을 정수로 변환하십시오. \55\를 얻기 위해 함께 연결하려면 정수를 문자열로 변환하십시오.

동적 타이핑은 유연성을 제공하지만 한 가지 단점은 변수가 사용 가능한 모든 유형을 포함할 수 있기 때문에 어떤 종류의 데이터로 작업하고 있는지 항상 확신할 수 없다는 것입니다. Ruby는 데이터 유형을 식별하는 방법을 제공합니다.

데이터 유형 식별

Ruby에서는 거의 모든 것이 객체입니다. 정수, 부동 소수점, 배열, 기호 및 해시는 모두 Ruby 객체이며, 모두 자신이 어떤 유형인지 알려주는 class라는 메서드가 있습니다. 부울 truefalse 및 값 nil도 개체입니다. 직접 사용해 보세요.

42.class # Integer
(42.2).class # Float
["Sammy", "Shark"].class # Array
true.class # TrueClass
nil.class # NilClass

또한 kind_of? 메서드를 사용하여 다음과 같이 특정 유형의 데이터를 확인할 수 있습니다.

42.kind_of?(Integer) # true

이는 변수가 있고 그 유형을 결정하려는 경우에 특히 유용합니다.

# somewhere in the code...
sharks = ["Hammerhead", "Tiger", "Great White"]
...
# somewhere else...

sharks.kind_of?(Hash) # false
sharks.kind_of?(Array) # true

이를 사용하여 외부 소스에서 오는 데이터가 올바른지 확인할 수도 있습니다.

if data.kind_of? String
data = data.to_f
end

Ruby는 또한 kind_of?와 동일한 기능을 수행하지만 일부 개발자에게는 읽기가 조금 더 쉬운 is_a? 메소드를 제공합니다.

if data.is_a? String
data = data.to_f
end

class, kind_of?is_a?를 사용하면 올바른 종류의 데이터로 작업하고 있는지 확인할 수 있습니다. Ruby에 대해 더 많이 배우면서 명시적으로 데이터 유형을 확인하지 않고 데이터를 처리하는 다른 방법을 발견하게 될 것입니다.

결론

Ruby 프로그램에서 다양한 데이터 유형을 사용하게 됩니다. 이제 Ruby 프로그램에서 사용할 수 있는 주요 데이터 유형을 더 잘 이해하게 되었습니다.

Ruby의 데이터 유형을 계속 탐색하려면 다음 자습서를 살펴보십시오.

  • Ruby에서 문자열로 작업하는 방법
  • Ruby에서 배열로 작업하는 방법
  • Ruby에서 데이터 유형을 변환하는 방법