CodeZine(コードジン)

特集ページ一覧

Rubyが.NETプラットフォームにやってくる

.NETプログラマのためのRuby入門

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/01/14 14:00

目次

基本のデータ型(2)

文字

 Rubyには、組み込みの文字型はありません。文字は数値として表されます。文字定数は?構文を使って表すことができます。chrメソッドを使うと、数値をその文字に対応する文字列に変換できます。

irb(main):025:0> "Reader"[2]
=> 97
irb(main):026:0> ?a
=> 97
irb(main):027:0> 97.chr
=> "a"

代入

 単に演算を行っても、結果を格納して後から利用できなければあまり役に立ちません。

irb(main):028:0> x = 42
=> 42

 文字列には、評価を埋め込むことができる特別な構文があります。この評価は、単純な変数の置換に限りません。あらゆる評価を埋め込むことができます。

irb(main):029:0> "The answer is #{x}!"
=> "The answer is 42!"
irb(main):030:0> "The answer is #{6 * 7}!"
=> "The answer is 42!"

 評価が行われないようにするには、文字列を二重引用符(")ではなく一重引用符(')で囲みます。

irb(main):031:0> 'The answer is #{x}!'
=> "The answer is \#{x}!"

配列

 Rubyの配列は、.NET 1.0のArrayListクラスとよく似た働きをします。これらは任意の型のデータを格納できる可変サイズの配列で、添字は0から始まります。

irb(main):032:0> a = ["hello", 42, "world"]
=> ["hello", 42, "world"]
irb(main):033:0> a << 5.0 * 7.5
=> ["hello", 42, "world", 37.5]
irb(main):034:0> a[0]
=> "hello"
irb(main):035:0> a[6] = 'hi' * 2
=> "hihi"
irb(main):036:0> a
=> ["hello", 42, "world", 37.5, nil, nil, "hihi"]
irb(main):037:0> a[99]
=> nil

 このコードでは、プッシュ演算子(<<)を使って配列の末尾に要素を追加する方法と、添字演算子([])を使って値を取得および設定する方法を示しています。配列の末尾よりも後ろに要素を追加すると、配列内の「穴」はnil値で埋められます。配列の末尾を越えた位置の値にアクセスしようとすると、例外がスローされる代わりにnil値が返されます。

 範囲添字を使うと、配列の一部を切り取ることができます。これを負の添字と組み合わせて使い、前からではなく後ろから配列にアクセスすることもできます(-1は末尾の要素、-2は末尾から2番目の要素という順になります)。逆方向の範囲を使って配列の一部を逆順に切り取ることはできませんが、順方向の範囲を使った後でreverseメソッドを呼び出すことはできます。

irb(main):038:0> a[-1]
=> "hihi"
irb(main):039:0> a[1..3]
=> [42, "world", 37.5]
irb(main):040:0> a[2..-2]
=> ["world", 37.5, nil, nil]
irb(main):041:0> a[-4..-1]
=> [37.5, nil, nil, "hihi"]
irb(main):042:0> a[-1..-4]          # Won't work
=> []
irb(main):043:0> a[-4..-1].reverse  # Works fine
=> ["hihi", nil, nil, 37.5]

 文字列と同様に、配列でもいくつかのユニークで便利なメソッドを利用できます。

irb(main):044:0> a
=> ["hello", 42, "world", 37.5, nil, nil, "hihi"]
irb(main):045:0> a.compact
=> ["hello", 42, "world", 37.5, "hihi"]
irb(main):046:0> a.join
=> "hello42world37.5hihi"
irb(main):047:0> [10, 75, 6, 29].sort
=> [6, 10, 29, 75]
irb(main):048:0> [[1, 2, 3], [4, 5, 6]]
=> [[1, 2, 3], [4, 5, 6]]
irb(main):049:0> [[1, 2, 3], [4, 5, 6]].flatten
=> [1, 2, 3, 4, 5, 6]

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Brad Wilson(Brad Wilson)

    ASP.NETチームのソフトウェア開発者としてMicrosoftに3年以上在籍。開発者としての経歴は15年を超える。.NET 2.0のテスト用開発フレームワークであるxUnit.netの共同製作者の1人である。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5