블로그로 돌아가기

Ruby의 데이터 타입 개요

Ruby의 데이터 타입 개요

Ruby 는 잘 알려진 프로그래밍 언어입니다. 단순성과 생산성 향상을 목표로 합니다. 또한 완전히 객체 지향적인 프로그래밍 언어이기도 합니다. 게다가 Ruby는 읽기 자연스럽고 쓰기 쉬운 우아한 구문을 제공합니다.

모든 프로그래밍에는 다양한 데이터 타입을 관리하는 작업이 필요합니다. 데이터 타입은 데이터의 특정 클래스를 설명합니다. 이는 프로그램에서 데이터를 어떻게 처리해야 하는지 머신에 알려줍니다. 데이터 타입은 데이터로 무엇을 할 수 있는지(수행할 수 있는 연산 포함)를 결정하는 데 매우 중요합니다. 이 튜토리얼에서는 Ruby에서 사용할 수 있는 데이터 타입에 대해 더 깊이 알아볼 것입니다. 또한 동적 타이핑에 대해서도 알아볼 것입니다. 이 기능을 사용하면 Ruby는 변수를 명시적으로 선언하지 않고도 변수의 데이터 타입을 자동으로 결정할 수 있습니다. 시작해 봅시다!

사전 요구 사항

이 가이드에 설명된 단계를 연습하고 구현하려면 다음 구성 요소가 필요합니다:

Ruby의 데이터 타입

Ruby는 정수, 부동 소수점 수, 문자열, 배열, 심볼, 해시 등 모든 프로그래밍 언어에서 접할 수 있는 공통적인 데이터 타입을 모두 제공합니다. 다음으로 Ruby의 다양한 데이터 타입을 다루는 방법에 대한 개요를 제공하겠습니다.

1단계 – 정수

수학과 마찬가지로, 정수는 컴퓨터 프로그래밍에서 소수점이 없는 수(정수)를 의미합니다. 값은 양수, 음수 또는 0일 수 있습니다. 값의 범위는 다음과 같습니다:

Ruby에서 정수를 사용해 볼 시간입니다. 첫 번째 예제는 화면에 간단한 정수를 출력하는 것입니다:

Data Types in Ruby 1

다음으로 정수 변수를 사용해 보겠습니다. 여기서 변수 sample_int는 정수 값(99)을 가지며, print 함수는 변수 값을 화면에 출력합니다:

Data Types in Ruby 2

정수로 수학 연산을 할 수도 있습니다. 다음 예제는 두 정수의 간단한 합을 보여줍니다:

우리가 큰 숫자를 다룰 때 가독성을 높이기 위해 쉼표(,)를 자주 사용합니다. 예를 들어, 가독성을 높이기 위해 백만(1000000)은 1,000,000으로 표기합니다. 쉼표 사용은 금지되어 있지만, Ruby에서는 밑줄( _)을 구분 기호로 사용할 수 있습니다. 다음 예제를 살펴보세요:

Data Types in Ruby 3

밑줄을 사용하면 특히 큰 정수 값을 다룰 때 코드의 가독성이 향상됩니다.

2단계 – 부동 소수점 수

A 부동 소수점 수(또는 줄여서 float)는 실수를 나타냅니다. 수학적 정의와 유사하게 실수는 유리수 또는 무리수일 수 있습니다. Ruby에서 float는 기본적으로 소수점이 포함된 숫자입니다.

화면에 float 값을 출력해 보겠습니다:

다음 예제는 float 변수를 선언하는 방법을 보여줍니다:

float 값과 변수에 대해 다양한 수학 연산을 수행할 수도 있습니다. 다음 예제는 두 float 숫자의 간단한 합을 보여줍니다:

float와 정수를 더하면 어떻게 될까요? 결과 값은 float가 됩니다. 다음 예제에서 55.0은 정수 형태이지만 float로 처리됩니다:

3단계 – 불리언

불리언은 수학의 논리 분야의 참/거짓 값을 나타냅니다. Ruby에서 불리언 데이터 타입은 다음 두 가지 값으로 표현됩니다: truefalse:

  • ~보다 큼

    • 100 > 99: true

    • 99 > 100: false

  • ~보다 작음

    • 500 < 999: true

    • 999 < 500: false

  • 같음

    • 10 == 10: true

    • 9 == 99: false

숫자와 마찬가지로, 다음과 같이 true 또는 false 변수에 값을 저장하는 것입니다. 다음 예제는 이 기능을 보여줍니다:

Step 4 – 문자열

프로그래밍에서 문자열은 일련의 문자(알파벳, 숫자, 기호)로 표현됩니다. Ruby에서 문자열은 작은따옴표( ') 또는 큰따옴표( ") 내에 존재합니다. 우리는 이미 Ruby에서 문자열을 사용하는 방법을 자세히 다루었으므로, 이번 섹션은 짧게 진행됩니다.

다음 예제는 Ruby로 작성된 기본적인 hello world 프로그램입니다:

문자열을 변수에 저장할 수도 있습니다. 다음 예제는 문자열 연결도 포함하고 있습니다:

Data Types in Ruby 4

Step 5 – 배열

배열은 동일한 데이터 유형의 고정된 크기의 요소 컬렉션을 저장할 수 있는 데이터 구조입니다. 또한 동일한 데이터 유형의 변수 컬렉션으로 개념화할 수도 있습니다. 이는 대부분의 현대 프로그래밍 언어에서 가장 기본적인 데이터 구조 중 하나입니다.

Ruby에서 배열은 다음과 같이 정의됩니다:

지금까지 논의한 다른 데이터 유형(정수, 실수, 문자열)의 배열을 만드는 것도 가능합니다. 다음은 몇 가지 예입니다:

  • 정수: [-5, 0, 5]

  • 실수: [-9.99, -6.99, -3.99, 0, 3.99]

  • 문자열: [“the”, “quick”, “brown”, “fox”]

다음 예제는 이러한 모든 유형의 배열을 구현합니다:

Data Types in Ruby 5

print 함수가 배열을 만나면 화면에 전체 배열을 출력한다는 점에 유의하세요. 더 편리하게 사용하기 위해 배열을 변수로 사용하는 경우가 많습니다. 코드를 업데이트해 보겠습니다:

Data Types in Ruby 6

Data Types in Ruby 7

이제 배열의 개별 요소를 다룰 수 있습니다:

Data Types in Ruby 7

Ruby에서 배열의 인덱스 값은 0부터 시작한다는 점에 유의하세요.

편의를 위해 Ruby의 배열에는 .first.last 메서드가 제공되어 첫 번째와 마지막 요소를 출력합니다:

Data Types in Ruby 8

Ruby에서 배열은 또 다른 흥미로운 특징을 가지고 있습니다. 동시에 서로 다른 유형의 데이터를 가질 수 있습니다. 예를 들어 문자열, 심볼, 심지어 다른 배열까지 저장할 수 있습니다:

Data Types in Ruby 9

6단계 – 심볼

Ruby에서 symbol은 라벨이나 식별자처럼 작동하는 특별한 데이터 타입입니다. 심볼은 불변(immutable)이므로 변경할 수 없습니다. 심볼은 마치 값 없이 변수를 선언하는 것처럼 보입니다.

다음은 심볼의 예입니다:

일반적으로 심볼은 중요한 것을 식별하는 데 사용됩니다. 하지만 다른 상황에서는 문자열로도 충분합니다.

객체 지향 언어인 Ruby는 문자열이 동일하더라도 고유한 메모리 위치를 가진 객체로 모든 것(문자열 포함)을 취급합니다. 하지만 심볼을 참조할 때는 프로그램의 모든 곳에서 동일한 객체, 즉 동일한 메모리 위치를 가리킵니다.

7단계 – 해시

해시는 키와 값의 사전과 같은 컬렉션입니다. 종종 해시는 사용자 정보와 같이 관련된 데이터를 저장하는 데 사용됩니다.

다음은 해시의 간단한 예입니다. 우리는 다음과 같이 해시 user_info를 생성하여 사용자의 사용자 이름과 비밀번호를 담았습니다:

Data Types in Ruby hashing in ruby

키-값 쌍의 값을 가져오려면 키를 사용해야 합니다. 다음 예제는 이 과정을 보여줍니다:

Data Types in Ruby retrieve value using key

Ruby는 약간 다른 구문을 사용하여 해시를 정의할 수도 있습니다 ( : 대신 =>):

Data Types in Ruby retrieving value using key

이 구문 구조는 다른 언어에서 사용하는 구문과 유사합니다. 예를 들어, JavaScript가 있습니다. 이 구문 구조에서 키는 심볼로 정의됩니다. 그렇기 때문에 "username" 대신에 다음과 같이: username을 사용하여 값에 접근합니다.

Dynamic Typing

변수를 선언할 때 데이터 타입을 명시적으로 할당할 필요가 없다는 것을 이미 눈치채셨을 것입니다. 대신 변수의 값이 데이터 타입을 결정합니다. Ruby는 런타임에 타입 검사가 수행되는 dynamic typing을 사용합니다. 반면, static typing 프로그래밍 언어(예: C/C++)에서는 컴파일 중에 데이터 타입이 결정됩니다.

다음 예제에서 변수 dyn_var에 할당된 모든 값은 유효합니다:

동적 타이핑 언어에서는 기존 변수를 자유롭게 재사용하여 다른 데이터 타입을 저장할 수 있습니다. 다음은 이 현상을 보여주기 위해 이전 예제를 업데이트한 것입니다:

dynamically typed variables

이 예제에서 볼 수 있듯이, 새로운 값이 할당될 때마다 즉석에서 dyn_var의 데이터 타입이 변경됩니다. 이는 하나의 데이터 타입을 다른 타입으로 변환할 때 유용합니다. 다음 예제는 이를 보여줍니다:

get input and cast

여기서,

  • 키보드 입력은 문자열이므로, 처음에는 length가 문자열입니다.

  • 원하는 값이 부동 소수점(float)이므로, to_f 메서드를 사용하여 문자열 값을 부동 소수점으로 변환합니다.

  • 값이 변경되었기 때문에, length에 부동 소수점 데이터 타입이 할당됩니다. 화면에 그 값을 출력할 때 이를 확인할 수 있습니다.

서로 다른 두 데이터 타입을 섞으려고 하면 어떻게 될까요? Ruby는 에러를 발생시킵니다. 확인해 보세요:

mixing two datatypes

데이터 타입 식별

Ruby에서는 모든 것이 객체로 취급됩니다. Ruby의 모든 객체에는 다음과 같은 메서드가 함께 제공됩니다. class. 이 메서드는 호출되면 소스의 데이터 타입이 무엇인지 알려줍니다. 다음은 class 메서드를 사용하는 몇 가지 예시입니다:

get classes name

데이터 타입을 확인하는 또 다른 방법은 kind_of? 메서드를 사용하는 것입니다. 이 메서드는 객체의 데이터 타입을 요청된 데이터 타입과 비교하여 확인하고 Boolean 값을 반환합니다. 다음 예시에서 확인해 보세요:

check datatype

이와 유사하게, 또 다른 메서드인 is_a?가 있습니다. 이 메서드는 데이터 타입을 비교하고 Boolean 값을 반환합니다. 유일한 차이점은 메서드의 이름입니다. 하지만 개발자가 읽고 이해하기가 조금 더 쉽기 때문에 이 메서드가 더 선호될 수 있습니다. 이전 예시를 다음으로 업데이트해 보세요. is_a?:

check datatype

마치며

어떤 프로그래밍 언어든 이를 다루려면 해당 언어가 지원하는 데이터 타입에 대한 충분한 이해가 필요합니다. 이 가이드에서는 Ruby 프로그래밍에서 가장 흔히 사용되는 데이터 타입을 살펴보았습니다. 정수(integer), 부동 소수점(float), 문자열(string), 심볼(symbol), 불리언(Boolean), 해시(hash)에 대해 논의하고 예시와 함께 시연했습니다.

Ruby를 탐구하는 데 도움이 되는 저희 블로그의 다른 튜토리얼도 확인해 보세요:

즐거운 컴퓨팅 되세요!

author

Preslav Dobrev

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.