ruby の printf メソッドについて

ruby の printf メソッドについて
ruby の printf は
p / put の高機能版になる
これは、フォーマット指定して表示できる
これは、C言語の printf() と同じ機能
java とかで 変数に代入した値と + で合わせて表示するときと同じことができる
x =”hebereke”
y=22
printf(“%s’s year is %d\n”,x,y);
とすることで
hebereke’s year is 22
と表示される
%s は文字列
%d は整数
桁数の指定も可能で
%10d とすれば、10桁表示になる
22のように10桁ない場合には
空欄で 22 というように左側に空欄ができる
左寄せにしたいのなら
%-10d というように – をつける
空白ではなく、0で埋めたいのなら
%-010d とすれば
hebereke’s year is 0000000022
というように
0で空白が埋められる
もっと便利な関数が
sprintf()
これ、よくPHPで見かけるメソッドで
この sprintf() は
表示ではなく、値を返す
これを使うと、sprintf() の値を変数に格納できるので
コードを書くときに便利になる
z = sprintf(“%s’s year is %-010d\n”,x,y)
p z
とすると
“hebereke’s year is 0000000022\n”
と表示される

ruby の日付、時間に関するクラスとメソッド

ruby の日付、時間に関するクラスとメソッド
ruby で日付を扱うには
Time オブジェクトを使う
現在時刻を取得するには
.now を使う
t = Time.now
p t
とすると、
Wed Aug 28 20:54:00 +0900 2013
と表示される
オブジェクトを作成後、
年だけ取り出すなら
.year を使う
p t.year
とすると
2013
となる
月だけなら
.month を使う
p t.month
なら

現在時刻なら .now でできるけど
指定した年月日のように、特定の日付や時間にするなら
.mktime()
を使う
2011年2月24日9時とするなら
t = Time.mktime(2011,2,24,9,0,0)
p t
とする
これで
Thu Feb 24 09:00:00 +0900 2011
と表示される
作成されたオブジェクトに関しては
足したり引いたりということも可能
p t +10
とすると
Thu Feb 24 09:00:10 +0900 2011
というように10秒追加される
使い道は、制限時間とか、有効期限の設定など
表示される時刻の形式は変更可能で
変更するには
.strtime() を使う
2011/2/24
というような表示にしたいのなら
p t.strftime(“%Y/%m/%d”)
とすることで
“2011/02/24”
となる
.strftime() の 変換フォーマットに関しては
リファレンスを参照
http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime

ruby のハッシュオブジェクトメソッド

ruby のハッシュオブジェクトメソッド
よくつかうメソッドとしては
.size
これで、格納している要素の数を表示できる
p sales.size
とすると
3になる
これは
{“taro”=>100, “jiro”=>150, “sabu”=>300}
というように、3つキーと値の組み合わせがあるから
そして
.empty?
これは、中身が空かどうかを調べる
空でないのなら false が返る
今回なら、中身があるので
p sales.empty?
だと
false
となる
キーがあるか調べるメソッドがあり、それが
.has_key?()
存在しているなら true 存在しないキーなら false になる
例えば、存在しない tanaka にすると
p sales.has_key?(“tanaka”)
の結果は false となる
似たようなメソッドとして、値の検証をする
.has_value?() もある
これも結果が true/false 判定になる
存在しない値である2222 で調べると
p sales.has_value?(2222)
の結果 false になる
ハッシュ関連の関数に関しては、リファレンスを参考にする
http://www.ruby-doc.org/core-1.9.3/Hash.html
また。リファレンスの中にはいくつか破壊的メソッドも存在する

ruby のハッシュオブジェクトについて

ruby のハッシュオブジェクトについて
ruby のハッシュオブジェクトは
他の言語だと、連想配列と呼ばれているものになる
ハッシュの場合、それぞれの値に対してキーをつける
通常の配列の場合だと
sales =[100,150,300]

0が100というようになるが、これが個人のスコアとかで
紐付けする場合、とても面倒
なので、ハッシュで値とキーの関係をつくる
値とキーは => で結ぶ
個人別にスコアをひもづけるには
sales ={“taro”=>100,”jiro”=>150,”sabu”=>300}
というようにする
p sales
で表示すると
{“taro”=>100, “jiro”=>150, “sabu”=>300}
となる
個別の値を取り出すには、キーを指定すればOK
p sales[“taro”]
とすれば、
100
となる
配列のときのように、いれた順番の数値を覚えておくのではなく
キーを覚えておけばいいので、管理が楽になる
このハッシュは
PHP
java script などでも使うので、覚えておくと応用できる

ruby の配列オブジェクトについて

ruby の配列オブジェクトについて
#12 配列オブジェクトを理解する
http://dotinstall.com/lessons/basic_ruby/4712
を参考に
ruby の配列オブジェクトについて学習
ruby でも配列の使い方は
java PHP とほぼ変わらない
配列名 = []
で作成して
配列は0から数える
name =[“hebeeke”,”fc2″,”hogehoge”]
として
p name[1]
とすれば fc2 と表示される
ruby ですこし変わった方法としては
範囲指定で表示
1から2まで表示するには
p name[1..2]
とする
これで、
[“fc2”, “hogehoge”]
というように指定した範囲が出力される
.. というように . が2つなら範囲指定
… というように . を3つにすると
最後の部分は含まないという指定になる
p name[0…2]
だと
0から1という意味になる
コードを書くときに間違えそうなので注意
ちなみに、値をマイナスにすると、後ろから数える
p name[-1]
だと
一番後ろを表示する

ruby の破壊的メソッドについて

ruby の破壊的メソッドについて
#11 破壊的メソッドとは?
http://dotinstall.com/lessons/basic_ruby/4711
を参考に、
!のついた破壊的メソッドについて学習
破壊的メソッドとは
s =”hello”
s1 = s.upcase
p s
p s1とすると
s1 では .upcaseにより
すべて大文字 変換される
この
s1 = s.upcase!
というように、! をつけると
破壊的メソッドになる
これは
普通、
変数 = 値の場合、代入になるだけだけど
破壊的メソッドをつかうと、元の値まで上書きする
s = “hello”
s1 =s.upcase
p s
p s1
の場合だと
“hello”
“HELLO”
というように、見慣れた結果になるけど
s = “hello”
s1 =s.upcase!
p s
p s1
だと
“HELLO”
“HELLO”
というように、代入前の値も変更されるようになる
関数のリファレンスの
http://www.ruby-doc.org/core-1.9.3/String.html
の中にもいくつか、!がついているのがあり
これらは破壊的メソッドを意味している

ruby の文字列オブジェクトのメソッド

ruby の文字列オブジェクトのメソッド
#10 文字列オブジェクトのメソッド
http://dotinstall.com/lessons/basic_ruby/4710
を参考に
ruby の文字列オブジェクトのメソッドについて学習
.length
は文字列の長さを返す
.upcase
は、すべて大文字変換する関数
p “hello” .upcase
とすると
“HELLO”
となる
文字を逆にして表示するなら
.reverse を使う
p “hello”.reverse だと
“olleh” となる
また、探している文字が何文字目にあるかを知らせる
index() というものがある
p “hello”.index(“o”)
とすると、oという文字が何番目にあるか表示される
ただ、この数字は配列なので、0から数えるため
実際に5番目のものは4として表示される
文字が含まれているか、判定するには
.include?()
を使う
wという文字が含まれているかを調べるなら
p “hello”.include?(“w”)
とする
結果は true / false で表示される
これらの関数のリファレンスは
http://www.ruby-doc.org/core-1.9.3/String.html
を調べるようにする

ruby の文字列オブジェクトについて

ruby の文字列オブジェクトについて
#09 文字列オブジェクトを理解する
http://dotinstall.com/lessons/basic_ruby/4709
を参考に
ruby の文字列オブジェクトについて学習
文字列オブジェクト作成のときに
“” でかこむのと ” でかこむのでは意味が異なる
“” は変数や特殊文字を展開する
” は展開しない
これは、Linux の echo コマンドなどで行うとわかりやすい
ちなみに、特殊文字は
\n 改行
\t タブなどがある
たとえば hello world を出す時
puts “hello\nworld”
だと
hello
world
と改行されるけど
puts ‘hello\nworld’
にすると
hello\nworld
とそのままでてくる
ubuntu の vim エディタの場合
“” と ” では途中で色が変わるので、見分けやすい
文字列の展開はちょっと変わっていて
#{変数}
とする
例えば
name =”hebereke”
puts ” my name is #{name}”
というようにすると
my name is hebereke
と表示される
java script とかだと
“my name is “+ name
というようにわけて書くけど
rubyの場合、一緒に書く
ちなみに、ruby の場合、
日本語を取り扱う場合には設定が必要
これがないと
invalid multibyte char (US-ASCII)
というエラーがでてくる
HTML5が最初に
<!DOCTYPE html>
と書いたり
PHPで 、PHPのコードの部分のところに
<?php
と書いたり
シェルスクリプトで
#!/bin/bash
と書くように
ruby で日本語対応するには
# encoding: utf-8
と1行目に書いておく
これで、無事に日本語が表示されるようになる

ruby の数値的オブジェクトのメソッド

ruby の数値的オブジェクトのメソッド
#08 数値的オブジェクトのメソッド
http://dotinstall.com/lessons/basic_ruby/4708
を参考に
数値的オブジェクトで使えるメソッドについて学習
型変換メソッドは
10.5 を整数にするなら
p 10.5.to_i
とする
.to_i は整数にする関数
ruby の場合、
javaとかPHP , C++ とかと違って関数に() がついていないので、最初のうちはわかりにくいかも
.to_ とつくのは、ほとんど型変換の関数
よくあるのが、文字列から整数への変換
あと、分数にする関数があり、それが .to_r
rは Rational の意味
p 10.5 .to_r
とすると
10.5 が分数になり
(21/2)
となる
四捨五入するメソッドもあり、それが .roud
p 10.5 .round
とすると、四捨五入されて11になる
p 10.5 .ceil なら繰り上げ
p 10.5 .floor なら切り捨て
乱数の発生なら rand()
これは、関数らしく()がついている
引数に乱数の発生させる幅を指定
p rand(100)
なら100までの乱数となる
数学的なものを使うには、java script などでおなじみ
Math 関連をつかう
平方根を扱うなら .sqrt() を使う
例えば、2の平方根なら
p Math.sqrt(2)
とする
結果は
1.4142135623730951

ruby で数値オブジェクトの演算

ruby で数値オブジェクトの演算
#07 数値的オブジェクトの演算
http://dotinstall.com/lessons/basic_ruby/4707
を参考に
数値的オブジェクトの学習
ruby では分数を
Rational() で表す
2/3 を表すなら
x = Rational(2,3)
puts x
とすると
2/3 となるはずが
undefined method `Rational’ for main:Object (NoMethodError)
となってしまう
原因は ruby のバージョンの違いで
私の場合 ubuntu ソフトウェアセンターでインストールしたため
ruby -v で確認すると
1.8.7
だった
おそらく、バージョン違いによる関数の取り扱い変更が
原因と思われるので
ruby ubuntu 1.9.3
で検索し

http://www.sssg.org/blogs/naoya/archives/2489

を参考に
sudo apt-get install -y ruby1.9.3
でインストール
これで、もう一度バージョンチェックすると
ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
で更新を確認
再度実行すると
2/3 と表示された
どうやら、バージョンの違いだったようだ
これと同様でよくあるのが Android
こっちはもっとバージョンによりAPIが変わるため
古い ver 2.2 などのアプリ作成本を参考に行うと
エラー連発になったりする
ちなみに、最新は4.2 あたりで
Nexus 7 に搭載されている
以前、Linux サーバー構築講座を受けたときに
バージョンを講座のものと同じにすることで
余計な手間がかからないし再現性ができると
あったので、これが生かせる状況になった
話がそれてきたので、rubyの演算子について
これも、ほかの言語とあまりかわらない
+ – * / % はおなじ意味
**で、べき乗となる
もし、5の2乗とするなら
x = 5 ** 2
puts x
とすると、
25 になる
ちなみに、ruby では分数の計算もできる
Rational() で分数が扱えるので
x = Rational(2,3) + Rational(5,6)
puts x
とすると
3/2
となる