LoginSignup
5
5

More than 5 years have passed since last update.

20150513 Ruby講義memo

Posted at

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 で戻り値を書ける

calc.rb
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"

argv.rb
puts "最初の引数:#{ARGV[0]}"
ARGV.each.with_index(1) do |arg, i|
  puts "#{i}番目: #{arg}"
end

each.with_index(1)
が便利。

read_file.rb
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/

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5