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
また。リファレンスの中にはいくつか破壊的メソッドも存在する
月別: 2013年8月
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
となる
DisplayMetricsクラスの代表的フィールド
DisplayMetricsクラスの代表的フィールド
float density
画面の論理的密度
int densityDpi
インチおたりのドット数で表した画面密度
int heightPixels
ピクセル値で表した画面の絶対的高さ
int widthPixels
ピクセル値で表した画面の絶対的幅
float xdpi
x軸の1インチあたりの物理的なピクセル数
float ydpi
y軸の1インチあたりの物理的なピクセル数
—
から送られてきた高速メモ帳
DisplayMetricsクラスの代表的フィールド
DisplayMetricsクラスの代表的フィールド
float density
画面の論理的密度
int densityDpi
インチおたりのドット数で表した画面密度
int heightPixels
ピクセル値で表した画面の絶対的高さ
int widthPixels
ピクセル値で表した画面の絶対的幅
float xdpi
x軸の1インチあたりの物理的なピクセル数
float ydpi
y軸の1インチあたりの物理的なピクセル数