読者です 読者をやめる 読者になる 読者になる

Code Log

プログラミングの勉強メモを残していきます。

Rubyでファイルを読み込み1行ずつ表示する

Rubyを使ってファイルの文字列を読み込み、1行ずつ表示してみます。読み込み対象のファイルはこちらです。やってみたことは以下のとおりです。 全文を表示する 1行ずつ表示する each_lineを使って1行ずつ読み込む 全文を表示する # encoding: utf-8 File.ope…

Ruby | 日本語の文字列を読み込もうとしてエンコーディングエラー`include?': incompatible character encodings: Windows-31J and UTF-8 (Encoding::CompatibilityError)

Rubyで日本語のファイルを読み込もうとしたら、こんなエラーが発生した。 `include?': incompatible character encodings: Windows-31J and UTF-8 (Encoding::CompatibilityError)コードはこんな感じだった。 # encoding: utf-8 File.open'C:\tmp\test.txt' …

Rubyで日時をYYYYMMDDのように指定のフォーマットで表現する

JavaでいうSimpleDataFormatみたいなことを、Rubyは簡単に実現することができます。以下の例を見てみましょう。 # encoding: utf-8 now = Time.now puts now.strftime('%Y/%m/%d %H:%M:%S') #2014/09/06 16:29:32 #桁数を指定して表示。ここでは8桁指定 puts…

RubyでXMLファイルを読み込み、複数の中から特定のエレメントの値を取得する

以下のようなXMLファイルを用意します。pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> </project>

Rubyでyaml形式の設定ファイルを用意して、値を取得する

以下のようなYAML形式のファイルを用意します。config.yml friend: name: takashi address: tokyo mails: - takashi@yahoo.fuga - yoshida@yahoo.hogeここで設定した値を取得するサンプルは以下のとおりです。 require 'yaml' config = YAML.load_file("conf…

Ruby | Template Method

Template Methodのポイントはこんな感じ。 抽象クラスを定義して、共通する基本的な処理を抽象メソッドとして持たせる それぞれの処理の詳細は具象クラスに持たせる 基本的な考え方は、骨格となるメソッドをもった抽象基底クラスを構築すること。骨格となる…

Ruby 配列の要素の追加や削除

Rubyの配列の操作について見ていきます。 要素の追加 末尾の要素の取り出し 先頭の要素の取り出し 比較結果が真のものだけ取り出し などのサンプルを記載します。 # encoding:utf-8 array = [1,3,4,] #0番目に代入 array[0] = 2 puts array #2,3,4 #要素を追…

Ruby 配列の要素数や値を取得する

要素数を調べる ある値を含んでいるか調べる 要素を取得する 要素数を調べる # encoding:utf-8 array = [1,2,3,4] #配列の長さ puts array.length #4 puts array.empty? #false #空の配列を作る empty_array = [] puts empty_array.empty? #true ある値を含…

Ruby Hashをfor~in文で回してkeyとvalueを取得する

for~in構文を使って、Hashをループさせてみます。 キーとバリューを取得して表示するサンプルです。 # encoding: utf-8 puts "-----------------" puts "配列をfor文でループさせる" puts "-----------------" names = ["翔子","和代","節子"] for name in …

Ruby Enumerableのメソッド 配列の要素を操作して新しい配列を取得するなど

ArrayやHashなどのオブジェクトの集まりを表現するクラスには、Enumerableがincludeされている。 そのため、Enumerableが持つメソッドを使うことができる。Enumerableが持つ便利なメソッドを使ってみたので、サンプルを掲載する。 # encoding: utf-8 puts "…

Rubyで数値(Numeric)を扱う。位(くらい)を指定して四捨五入など

Rubyで数値を操作するサンプルをまとめて載せてみます。 ●目次 数値が0かどうかを確認する 四捨五入(丸め操作) 偶数か奇数かを調べる 整数を文字列に変換する 文字列を整数に変換する ある整数からある整数まで繰り返す 分数を表現する 数値が0かどうかを確…

Ruby Mix-inでメソッドをクラスのインスタンスメソッドとして取り込む

◆目次◆ モジュールとは extendを使ってメソッドをオブジェクトに取り込む includeを使って、クラスのひな形にメソッドを取り込む モジュールとはmoduleは以下のように定義します。 module モジュール名 end モジュールを取り込むにはincludeというキーワード…

Rubyでエラー「invalid multibyte char (US-ASCII)」が出た時の対処法

これはRuby1.9のエンコーディングがデフォルトでUS-ASCIIとなっているため、日本語などを使うと出てくるエンコーディングエラーです。 出力しようとしている文字列がUS-ASCII以外であると判断されてエラーになるってわけです。「invalid multibyte char (US-…

Ruby equal?を使ってオブジェクトの同一性を比較する

==演算子は、ほとんどのクラスで同値性を判断するメソッドとして定義されている。 ==演算子で比較すると、別々のインスタンスでも値が同じであれば真を返す。 この値の比較のことを同値性の比較という。同じインスタンスであることを比較するには、equal?メ…

Rubyの変数の使い方をまとめた。クラス変数やインスタンス変数の宣言の方法など。

Rubyには以下の変数がある。 グローバル変数 ローカル変数 定数 インスタンス変数 クラス変数 グローバル変数Rubyのグローバル変数は$から始まる必要がある。 $global bar = "foo" def hello local = "fuga" puts $global #hogeと表示される #puts bar #アク…

Ruby メソッドの戻り値を取得する方法

Rubyでメソッドを作るための構文は以下のように書きます。 def メソッド名(仮引数...) #メソッドの処理 end 例を見てみましょう。 def say_hello(names) names.each do |name| puts "hello,#{name}" end end name_array = ['takashi','yuasa','yoshida'] say…

複数行の長い文字列を扱う

Rubyで複数行に渡る長い文字列を扱うときは、ヒアドキュメントを使います。 ヒアドキュメントは、「以下がサンプルです。 words = <

2014/03/02 (1)

■配列・ハッシュ ・配列とハッシュはインデックス付きのコレクション・キーを使ってその各要素にアクセスできる・新しい要素を追加する際に必要に応じてサイズが自動で拡張される。 a = [1, 'cat', 3.2] inst_section = { :cell => '弦楽器', :clarinet => '…

Rubyのオブジェクト

オブジェクトとは、データと手続きをまとめたもの。 Rubyではクラス名は必ず大文字で始めるルールがある。 参照 「=」は左辺に「右辺の値への参照(オブジェクトリファレンス)」を代入する。 つまり、左辺に右辺の値を参照させる。str2 = "hello!" str1 = str…

Ruby メソッド do~end で繰り返す

1.基礎 メソッドの呼び出しの直後にコードブロックをdoとendで囲む。 これは繰り返しの度に実行される処理を意味する。 メソッド名(実引数...) do |変数名| #処理 end 2.サンプル # -*- coding: UTF-8 -*- def hello(girlfriends) girlfriends.each do |name…

配列を作る 繰り返し処理する

1.基礎 Rubyで配列を作るのは arr = Array.new とする。 個数を指定して配列を作成する場合は、 arr = Array.new(10) 値を指定して配列を作成する場合は、 arr = [値1,値2,値3] 2.サンプル # coding: utf-8 arr = Array.new arr[0] = 100 arr[1] = 200 arr[2…

Ruby 範囲指定のfor文

1.基礎 「AからBまで」というような範囲を決めて繰り返すためには、範囲式を使う。 範囲式は、 AからBまでの範囲を示す場合→A..B AからBの直前まで(B未満)の範囲を示す→A...B と書く。 2.サンプル # -*- coding: UTF-8 -*- sum = 0 for n in 1..1000 sum += …

Ruby メソッドを作る

1.基礎 Rubyのメソッドの構文は以下のとおり。 def メソッド名 #処理 end 引数を指定する場合は、 def メソッド名 変数1, 変数2 #処理 end のように書く。返り値を取得したい場合は def メソッド名 変数1, 変数2 #処理 return 値 end 2.サンプル # -*- codin…

Ruby ハッシュのループを回す

1.基礎 ハッシュは「キー」と呼ばれるものを使って値を管理する。 キーはどんなものでも設定することができるが、一般的にはテキストを使って名前を使って管理する。ハッシュには配列のようにたくさんの値を保管する入れ物が用意されているが、それぞれは番…

Ruby クラスとインスタンス変数

1.基礎 オブジェクトの設計図にあたるものがクラス。 なんかこの説明だとわかりづらいかもしれないけれど、要は雛形だよね。クラスという雛形から、たくさんの同じようなオブジェクトを作る。零戦の設計図を書いたら、工場で零戦の実機ができたわけで、それ…

RubyとRailsのインストール手順

Rubyのインストール RubyInstaller for Windowsを使います。 http://rubyinstaller.org/上記のリンク先のDownloadをクリック。 2013/1/25時点ではRuby2.0が最新版のようなので、自分はとりあえず「Ruby 2.0.0-p353 (x64)」をダウンロードしmasita 。落として…