20150513 Ruby講義
紹介
ruby -v 2.0.0p645 (2015-04-13) [i386-mingw32]
terapad
文字コードを指定してできるので選んでいる。
Rubyはプログラマが書きやすいのを目指している言語
るりま
http://docs.ruby-lang.org/ja/
http://docs.ruby-lang.org/ja/2.0.0/doc/index.html
インタプリタ
Rubyはインタプリタ言語ですので プログラムを実行するためにコンパイルする必要はありません。
変数に型が無い (動的型付け)
Rubyの変数はどのような型のデータも格納する事ができますので、 変数の型について心配する必要はありません。 半面、コンパイル時のチェックは弱くなります。
反面バグを見つけにくい
install
windows installer
mac
ports
brew rubyで書いているので楽
linux
apt
debian 向け
red hat系
cent os
rpm
rbenvもあるよ
rubyをbuild する場合、
依存するパッケージを入れておかないと
https://github.com/sstephenson/ruby-build/wiki
editor
sublime
補完機能があったりする。
私はvimをつかってるんですが
gem
ローカルだけ探した場合
gem search -l pry
bundler
gemをまとめて扱うことのデフォルト。ほぼこれ経由で使う。
irb, pry
pry便利
色付けしてくれる
CTRL+r コマンド検索してくれる
print method
"", ''
''は特殊文字どれも展開しない
Ruby コーディング規準
Ruby コーディング規準 cookpad
https://github.com/cookpad/styleguide/blob/master/ruby.ja.md
github
https://github.com/styleguide/ruby
前田さんの
to_s, inspect はより人間への説明的。開発者向け、pメソッド向け
日本語の扱い
shift-jis で保存すると大変。
UTF-8N のほうであるべき。
http://www.solidpanda.com/book/article/944/
BOMなしが一般的
# encoding: Shift-JIS
を1行目に書くのが重要
sheban
実行ファイル指定
これがあるときはしょうがないので encoing は2行目に。
ここが一番簡単
Ruby M17N の設計と実装
http://magazine.rubyist.net/?0025-Ruby19_m17n
数字
2/3 は整数演算扱い
to_X は慣用的な名前
methods(false)
で当該クラスで追加したメソッドのみ表示できる
変数
マジックナンバーだめです
複数形には s とつけてやりましょう
変数名は説明的になるべく省略せずにしたほうがいい
コメント
1行ごとでなく、ブロックごとでまとめて説明したほうがいい。
rdoc
http://ruby.gfd-dennou.org/tutorial/rdoc/
制御構造
例外とはなにか? どう説明したらいいかな、、、
コマンドプロンプト コマンド入力の途中でTABを押したら補完してくれるよ
if で戻り値を書ける
a = 9
res =
if(a >= 10)
"bigger"
else
"smaller"
end
条件演算子 cond ? a : b
loop
while はそんなには使わないかな。
times
pry 上で日本語打つと文字化けするな、irb上では大丈夫だな
chcp 65001
hash
symbolだと省メモリにつながる
正規表現
大文字小文字関係なしに比較
/Ruby/i =~ "RUBY"
puts "最初の引数:#{ARGV[0]}"
ARGV.each.with_index(1) do |arg, i|
puts "#{i}番目: #{arg}"
end
each.with_index(1)
が便利。
filename = ARGV[0]
reg_pattern = Regexp.new(ARGV[1])
file = File.open(filename)
file.each_line.with_index(1) do |line, i|
if reg_pattern =~ line
print "#{i}:#{line}"
end
end
file.close
るりまサーチ
require_relative: 実ファイル位置から相対パスを見つけてくれる
require: 実行したフォルダから探す
グローバル変数は変更箇所が特定できないため、使いづらく、
あまり使わないほうがよい。
多重代入がまだ認識できていない
変数を入れ替える
a, b = b, a
るびまいいので見ましょう
http://magazine.rubyist.net/