ruby のif の別の書き方
#21 if文の別の書き方を理解しよう
http://dotinstall.com/lessons/basic_ruby/4721
を参考に
ruby での if の別の書き方を学習
if score >= 80 then
puts “great”
end
という単純な if の場合には
もっと簡単に
puts “great” if score >=80
という書き方もできる
これを使えば、簡単な判定で表示を変えるようなことができる
また条件演算子というものがあり
これは、 if else の別の書き方
書き方は、
条件 ? 値1 : 値2
という書き方
これはPHPなどで使う三項演算子と同じ
a =50
b = 20
で大きいほうの値をかえすようにするなら
max = a > b +? a : b
p max
これで、50が表示される
ruby の場合、他の言語とことなり
あまり() を使わないけど、基本的部分はおなじなので
他の言語を取得しているなら
わかりやすい
カテゴリー: ruby
ruby の if 文について
ruby の if 文について
rubyの if 文の注意点として
ruby の場合 false と nil だけが偽として扱われる
このため数値の0とか、空文字に関しては
他の言語とは異なり、真として扱われるので注意
scoreが85点以上のときに処理する if 文を書くには
score = 85
if score >= 85 then
puts “great!”
end
というようになる
ruby の if の構文は
if 条件式 then
行う処理
end
というように、シェルスクリプトに近い書き方になる
PHP java のように、条件を()で囲まない
if else にするには
if 条件式 then
真の時の処理
else
偽の時の処理
end
というようになる
else if の処理もするなら
if 条件式 then
真の時の処理
elsif 条件式2
条件式2にあてはまったときの処理
else
どちらでもなかったときの処理
end
というようにする
else if ではなく elsif なので注意
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
なら
8
現在時刻なら .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行目に書いておく
これで、無事に日本語が表示されるようになる