Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ruby勉強会(第1回) 2006/06/29 竹内豪.

Similar presentations


Presentation on theme: "Ruby勉強会(第1回) 2006/06/29 竹内豪."— Presentation transcript:

1 Ruby勉強会(第1回) 2006/06/29 竹内豪

2 Windows XPでRubyを使う 一番お気軽な方法 irbを使う
バイナリをダウンロードしてきて解凍 フォルダを適当な名前にリネームしてCドライブ直下に移動(例:rubyにリネームしてC:\rubyに移動) PATHを通す(PATH=ほげほげ;C:\ruby\bin;とか) irbを使う

3 Rubyはオブジェクト指向言語である #新しいオブジェクトの生成 song1 = Song.new(“Ruby Tuesday”)
song2 = Song.new(“Enveloped in Python”) #定数もオブジェクトとして扱う “gin joint”.length →9 “Rick”.index(“c”) →2 -1942.abs →1942 sam.play(aSong)→”duh dum, dum de dum …” Java → number = Math.abs(number) Ruby→ number = number.abs

4 Rubyの基本(1) #メソッドの作り方 def sayGoodnight(name)
result = “Goodnight, “ + name return result end #文の終わりにセミコロンはつかない puts sayGoodnight(“john-Boy”) puts sayGoodnight(“Mary-Ellen”)

5 Rubyの基本(2) #ここらへんはPerlとだいたい同じ #右から順に評価されたり、カッコ省略したり
puts sayGoodnight “John-Boy” puts sayGoodnight (“John-Boy”) puts(sayGoodnight “John-Boy”) puts(sayGoodnight(“John-Boy”)) puts “And Goodnight,\nGrandma”

6 Rubyの基本(3) #ダブルクオート内での変数の評価 def sayGoodnight(name)
result = “Goodnight, #{name}” return result end “Goodnight, #{name}”

7 Rubyの基本(4) 先頭文字について ローカル変数、メソッドの引数、メソッド名はすべて小文字またはアンダースコア(_)で始める
グローバル変数にはドル記号($)をつける クラス名、モジュール名、定数は先頭文字を大文字にする

8 配列とハッシュ(1) #undefじゃなくnil a = [1, ‘cat’, 3.14 ] a[0] → 1 a[2] → nil
a → [1, “cat”, nil] empty1 = [] empty2 = Array.new

9 配列とハッシュ(2) a = %w{ ant bee cat dog elk } a[0] → “ant” a[3] → “dog”
instSection = { ‘cello’ => ‘string’, ‘clarinet’ => ‘woodwind’, ‘drum’ => ‘percussion’, ‘oboe’ => ‘woodwind’, ‘trumpet’ => ‘brass’, ‘violin’ => ‘string’, }

10 配列とハッシュ(3) instSection[‘oboe’] → “woodwind”
instSection[‘cello’] → “string” instSection[‘bassoon’] → “nil” #未定義値のデフォルト設定 histogram = Hash.new(0) histogram[‘key1’] → 0 histogram[‘key1’] → historgram[‘key1’] + 1 histogram[‘key1’] → 1

11 制御構造(1) #ブロックはendで終わらせる If count > 10 puts “Try again”
elsif tries == 3 puts “You lose” else puts “Enter a number” end

12 制御構造(2) while weight < 100 and numPallets <= 30
pallet = nextPallets <= 30 weight += pallet.weight numPallets += 1 end if radation > 3000 puts “Danger, Will Robinson”

13 制御構造(3) puts “Danger, will Robinson” if radiation > 3000
while square < 1000 square = square*square end square = square*square while square < 1000

14 正規表現(1) #パッと見Perlと同じっぽい /Perl|Python/ /P(erl|ython)/ /\d\d:\d\d:\d\d/
/Perl\s+Python/ /Ruby (Perl|Python)/

15 正規表現(2) if line =~ /Perl|Python/
puts “Scripting language mentioned: #{line}” end #Stringクラスの置換メソッド(substitute) line.sub(/Perl/, ‘Ruby’) line.sub(/Python/, ‘Ruby’)

16 ブロックとイテレータ(1) #両方ともブロック {puts “Hello” } do club.enroll(person)
person.socialize end

17 ブロックとイテレータ(2) #このyieldというのがよくわからない^^; def callBlock yield end
callBlock { puts “In the block” } 実行結果 In the block

18 ブロックとイテレータ(3) def callBlock yield “hello”, 99 end
callBlock { |str, num| …} a = %w( ant bee cat dog elk ) a.each { |animal| puts animal}

19 ブロックとイテレータ(4) def each for each element yield(element) end
[ ‘cat’, ‘dog’, ‘horse’ ].each do |animal| print animal, “ – “

20 ブロックとイテレータ(5) #組み込みのイテレータ 5.times { print *** }
3.upto(6) {|i| print i } (‘a’..’e’).each {|char| print char }

21 読み書き(1) #おなじみprintf printf “Number: %5.2f, String: %s”, 1.23, “hello”
#1行キーボードから入力を読み込む line = gets print = line

22 読み書き(2) while gets if /Ruby/ print end
ARGF.each { |line| print line if line =~ /Ruby/ }

23 参考文献 達人プログラマーズガイド プログラミングRuby Rubyインストールガイド デビット・トーマス+アンドリュー・ハント 著
デビット・トーマス+アンドリュー・ハント 著 田和 勝 訳 まつもとゆきひろ 監修 ピアソン・エデュケーション Rubyインストールガイド


Download ppt "Ruby勉強会(第1回) 2006/06/29 竹内豪."

Similar presentations


Ads by Google