Vagrant UPがようやくなんとか復旧したので勉強を開始。
ローカル環境
- PowerShell
cd MyVagrant
cd MyCentOS
vagrant up - Putty
MyCentOS open
login as vagrant
pass vagrant
[vagrant@localhost ruby_lessons]$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
[vagrant@localhost ruby_lessons]$
Rubyがインストールされていると使える便利なコマンド
- irb インタラクティブにルビーを操作していくことができる
[vagrant@localhost ruby_lessons]$ irb
irb(main):001:0> p "hello"
"hello"
=> "hello"
irb(main):002:0> exit
exitで抜ける
- ri 知りたい命令やオブジェクトのドキュメントを見ることができる
例も豊富なのでわからないときがあれば見ると良い。
qで抜ける
02 はじめてのRubyプログラム
コマンドラインは見通しが悪いのでファイル転送ツール(Cyberduck)で操作していく。
実行はPuttyから
[vagrant@localhost ruby_lessons]$ ruby hello.rb
hello world[vagrant@localhost ruby_lessons]$
ruby hello.rb 命令 ファイル名
print "hello world"
print 渡したオブジェクトを文字列にして表示させる
print “hello world”;
末尾セミコロンも使えるが、改行があれば省略できるので、1行に複数の命令を書きたいとき以外には使わない
# コメント
パウンドキーを頭につける
=begin
ここの中はコメント
=end
一気に書きたい場合は =begin =endで囲う
- puts “hello world”
+改行がつく p “hello world”
デバッグ用、オブジェクトの種類がわかりやすいように表示してくれる(””つけるなど)
03 変数、定数を使ってみよう
変数
変数はいきなり使い始めることができるが
英子文字か_アンダーバーで始めなければいけない
msg = "hello world"
puts msg
変数には何回でも値を割り当てることができる
msg = "hello world"
puts msg
msg = "hello world again"
puts msg
[vagrant@localhost ruby_lessons]$ ruby hello.rb
hello world
hello world again
定数
プログラム中で値を書き換えてほしくないもの
最初が英大文字
慣習的に全部大文字にする場合が多い
VERSION = 1.1
puts VERSION
VERSION = 1.2
puts VERSION
とした場合
[vagrant@localhost ruby_lessons]$ ruby hello.rb
1.1
hello.rb:9: warning: already initialized constant VERSION
hello.rb:7: warning: previous definition of VERSION was here
1.2
rubyは警告は出るが値は書き変わってしまう点に注意!
04 オブジェクトを理解しよう
Rubyは全ての値がオブジェクトになっている
オブジェクト=便利な命令をいろいろ持っているデータ型
例)
“Hello World”.length で文字数を返してくれる
“Hello World”.reverse 逆順に並べた文字列を返す
1.1.round 四捨五入して1を返す
1.1.floor 小数点以下を切り捨て
オブジェクトの種類によって命令がいろいろある
命令=メソッド
どのメソッドが使えるかは、値がどの種類のオブジェクトに属しているかによって変わる
オブジェクトの種類=クラス
値=インスタンス
String Class 文字列
Float Class 浮動小数点
クラスの扱に慣れることによって、思った通りのプログラミングができるようになる
05 数値オブジェクトを使おう
数値はそのまま記入
32
4.8
オブジェクトがどのクラスに属していて
どんなメソッドを持っているか調べる
.class
.methods
というメソッドを使う
floatクラスで、一覧のメソッドが使える
代表的なメソッド
四則演算 + – * / % **(べき乗)
割り算の結果を小数点にしたい場合は、一方を浮動小数点にする
p 10.0 / 3
有理数 分数を扱う場合
p Rational(2,5)
五分の二
p Rational(2,5) + Rational(3,4)
p 2/5r + 3/4r
でもOK
[vagrant@localhost ruby_lessons]$ ruby hello.rb
13
30
4.8
3
1
3.3333333333333335
(23/20)
(23/20)
p 52.6.round 四捨五入
p 52.6.floor 切り捨て
p 52.6.ceil(シール) 切り上げ
06 文字列オブジェクトを使おう
ダブルクォーテーションまたは
シングルクォーテーションでくくる
”” 特殊文字が使える、式展開ができる
\n 改行
\t タブ
puts “hello \n wor\tld”
puts ‘hello \n wor\tld’
式展開
name = “taguchi”
puts “hello #{name}”
↓
hello taguchi
文字列オブジェクトでよく使うメソッド
+連結
*繰り返し
puts “hello” + “world”
puts “hello” * 10
↓
helloworld
hellohellohellohellohellohellohellohellohellohello
07 ?や!がついたメソッドを使おう
文字列オブジェクトに使えるメソッドの続き
- !
upcase 文字を大文字にしたものを返すだけ
upcase! 文字を大文字にしたものを返しつつ、元の文字列も大文字で書き換える
!がついたメソッドはおおもとの文字を書き換えてしまうという意味で『破壊的なメソッド』と呼ぶ
name = “taguchi”
puts name.upcase
puts name
puts name.upcase!
puts name
↓
TAGUCHI
taguchi
TAGUCHI
TAGUCHI
他にも!のついたメソッド
downcase 全部小文字にする
reverse 文字順を逆にする
など
- ? 真偽値 true or false を返す
empty? 空かどうか
include? 特定の文字が含まれているか
name = “taguchi”
p name.empty?
p name.include?(“g”)
↓
false
true
08 配列オブジェクトを使おう
colors = [“red”,”blue”,”yellow”]
p colors[0] 添え字
p colors[-1]末尾
p colors[-2]末尾から2番目
p colors[0..2]0~2まで
p colors[0…2]0~2の直前まで
p colors[範囲外の数字] nilというオブジェクトが返る
nil 何もないという特殊なオブジェクト
要素の書き換え
colors = [“red”,”blue”,”yellow”]
olors[0] = “pink”
colors[1..2] = [“white”.”black”]
要素を追加する
colors.push(“gold”)
または
colors << “silver”
その他のメソッド
p colors.size 要素の数を示す
p colors.sort 並べ替え
09 ハッシュオブジェクトを使おう
ハッシュ
key / value
ペアにしてまとめておくことができるオブジェクト
scores = {“taguchi” => 200, “fkoji” => 400}
keyは文字列でも数値でもなんでもよいが、
『シンボルオブジェクト』が良く使われる。
:taguthi
文字列を使うよりより高速
scores = {:taguchi => 200, :fkoji => 400}
さらに簡単に
scores = {taguchi: 200, fkoji: 400}
↑こう書いても良い
ハッシュ要素へのアクセス
p scores[:taguthi]
ハッシュの値の書き換え
scores[:jkoji] = 600
さらに便利なメソッド
p scores.size 要素の数
p scores.keys キーの一覧
p scores.values 値の一覧
p scores.has_key?(:taguchi) そのキーがあるかどうか
2
[:taguchi, :fkoji]
[200, 400]
true