プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby
  • 【Ruby】「シンボル」、「ハッシュ」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby】「シンボル」、「ハッシュ」について

06.16

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

シンボルとは?

基本的には文字列と同じようなものですが、少し異なります。

シンボルのメリット

  • Rubyの内部で、「整数」として管理されているので、文字列の値が同じかどうか通常の文字列に比べると高速に処理できます。
  • 同じシンボルであれば、全く同じオブジェクトになるので、大量の同じシンボルを作成する処理等では、メモリの節約になります。
  • イミュータブルなオブジェクトなので、文字列のように値を変更することはできませんので、勝手に値を変更されたくないオブジェクトの場合に向いています。

シンボルの特徴

Symbolクラスのオブジェクト

シンボルの用途

ソースコード上で、名前を識別したいが、その名前が必ずしも文字列である必要がない場合に使う。

代表的なシンボルの利用例

ハッシュのキー

文字列をハッシュのキーにするよりもシンボルをキーにした方が高速に値を取り出すことができます。

メソッドの引数

1
2
3
def メソッド名(キーワード引数1: デフォルト値1,キーワード引数2: デフォルト値2)
  #処理内容
end

メソッドの引数にシンボルを使うことで引数の用途が明確になりプログラムの可読性が上がります。

Railsのリクエストパラメータ

シンボルの使い方

書き方

1
:シンボル名

ハッシュとは?

「キー」と「値」の組み合わせで管理するオブジェクトです。(Javaで言うところのMapですね。)

配列との使い分け

ハッシュの保持する値はデータ型は異なるデータ型でも構いません。(「文字」と「数字」や「配列」を混在させることも可能です。)配列と違って意味のあるまとまりのようなデータ(HTTPリクエストデータ等)を保持する場合に使います。

ハッシュの使い方

基本

書き方1

従来の記述方法、キーがシンボルにならない。

1
ハッシュ変数 = {'キー1'=>'値1','キー2'=>'値2','キー3'=>'値3'}

例

1
countrylang = {'japan'=>'Japanese','chana'=>'Chinese','Korea'=>'Korean'}

キーをシンボルにしたい場合は下記のように記述する。

1
ハッシュ変数 = {:キー1=>'値1',:キー2=>'値2',:キー3=>'値3'}

書き方2

Ruby1.9で追加された。ハッシュリテラルの記述方法。この書き方はキーが自動的にシンボルになる。

1
{キー1:'値1',キー2:'値2',キー3:'値3'}

書き方3

Ruby2.2から追加された書き方。この書き方もキーが自動的にシンボルになる。

1
{'キー1':'値1','キー2':'値2','キー3':'値3'}

書き方4

Hashクラスのクラスメソッド を使って記述する方法、これもキーがシンボルになる。

1
Hash[:a,1,:b,2,:c,3]

ハッシュを繰り返し処理をさせる

書き方

1
2
countrylang.each do |ブロック引数1,ブロック引数2|
end

例

1
2
3
4
5
countrylang = {'japan'=>'Japanese','chana'=>'Chinese','Korea'=>'Korean'}
 
countrylang.each do |key,value|
        puts "#{key}:#{value}"
end

実行結果

ハッシュから値を削除する。

1
ハッシュオブジェクト.delete('キー')

ハッシュから値を取り出す。

1
ハッシュオブジェクト[キー]

ハッシュに値を追加する。

1
ハッシュオブジェクト[キー] = 値

ハッシュが持っているキーの一覧を知る。

1
ハッシュオブジェクト.keys

ハッシュが持っているバリューの一覧を知る。

1
ハッシュオブジェクト.values

ハッシュが指定したキーを持っているか確認する。

1
ハッシュオブジェクト.has_key?(キー名)

ハッシュのサイズを求める。

1
ハッシュオブジェクト.size

ハッシュのキーにシンボルを使う。

ハッシュのキーは、文字列を使うこともできますが、文字列よりも高速に処理できるシンボルが望ましいです。

ハッシュのキーに対して、シンボルを設定することができます。

その際の書き方としては、「=>」ではなく、「シンボル:'値'」という書き方をすることができます。

実装例

1
2
3
countrylang = {japan: 'Japanese',chana: 'Chinese',korea: 'Korean'}
 
puts countrylang[:japan]

スポンサーリンク
  • 2018 06.16
  • miyabisan2
  • コメントを書く
  • Ruby
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 12.18

    【Ruby】条件分岐/繰り返し処理

  2. 2018 06.16

    【Ruby】Rubyの基本、正規表現の便利ツール(Rubular)

  3. 2018 06.18

    【Ruby】デバッグの仕方

  4. 2018 06.15

    CentOS6に、Rubyをインストールする。(Hello Worldまで)

  5. 2018 06.15

    【Ruby】文字列についての知識

  6. 2019 11.16

    【Ruby】メソッド、yield、Procオブジェクトに関する知識

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby】Rubyの基本、正規表現の便利ツール(Ru…

【Ruby】「モジュール」や「ミックスイン」について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー