目次に戻る  前のページへ


補足事項と役に立ちそうなスクリプト

ここまでの内容はいかがだったでしょうか.いきなり自分で考えることにはかな り無理がありましたが,その考える過程がプログラミングの楽しみですし,その 楽しさがRubyではより大きいことが特徴です.

さて,Rubyは「オブジェクト指向スクリプト言語」なのですが,今日の講座では その「オブジェクト指向」の部分はまったく触れていません.ご存じの方もおら れるかも知れませんが,

のようなオブジェクト指向に特有,固有の概念があり,それを抜きにしては本来 は片手落ちの様相が否めませんが,さすがに入門編ではそこまで突っ込むわけに も行きません.ですので,ここではメソッドの作用方式と「多様性」に関連した項目について,少しだ け書いておきます.

  1. ピリオドによるメソッド作用表現

    次に示すスクリプト を利用して文字列オブジェクトにいくつかのメソッドを作用させてみましょう.

    str = "abcdefghijklmn"
    
    p str.size    #文字列の文字数
    p str.split(//)  #文字列の配列化
    p str.chop    #最後の一文字削除
    p str.delete("b") #bの文字削除
    p str.reverse   #文字列の並べ替え(逆順)
    
    p str.size
    p str.chop.size
    p str.chop.split(//)
    p str.delete("b").reverse
    

    変数 str というオブジェクトにいくつかのメソッドを作用させていま すが,その際に,オブジェクトにピリオドを介してメソッドを作用させます.そ の結果の状態もオブジェクトですので,それに対してさらにピリオドでメソッド を作用させることが可能です.メソッドは対応するものであれば,いくつでも繋 げることが出来ます.

  2. 多様性

    オブジェクトは自分自身を理解しているので,メソッドをオブジェクトに作用さ せると,そのオブジェクトに対して有効な手段を自動的に使い分けます.上で利 用したメソッド size を例に取って 次のスクリプトで試してみましょう.

    str = "abcdefghijklmn"
    ary = [1, 2, 3]
    val = 100
    
    p str.size
    p ary.size
    p val.size
    

    size という同じメソッドが作用するものによって違う動作をします. 文字列に対しては文字数を表示 (これを「返す」と言います.) します が,配列に対しては「要素の個数」を返します.さらに,数値に対して はその数値が計算機の内部で使用している「バイト数」を返します.こ のようにオブジェクトの持っている性質 (属性) に従ってメソッドの作 用が変わることもオブジェクト指向言語の特徴です.

  3. while 文補足

    なかなか詳しく紹介できなかったwhile 文の活用ですが, 次のようなスクリプト で確認してみて下さい.

    array = Array.new(10,0)
    
    while array.shift
      puts "要素があります"
    end
    

    shift メソッドは配列の先頭の要素を取り出します.要素が取り出さ れると配列に含まれる要素の個数が減って行き,最後に無くなります.そのと きに,条件式が偽になるのでループが終わります.

  4. 役に立ちそうな(?)スクリプト

    最後の最後に,実際に使えるかどうかは分かりませんが,今までやったことの組 合せでできるそれなりに実用的なスクリプトを紹介します.ものはためしで, 中身を見て動かして下さい.

    • 電卓?

      ターミナルからの操作を前提としていますので,S@pphireは使えません.のアイコンがパネルにありますので, クリックして起動して下さい.そこで次のコマンドを実行して作業します.

      $ cd ~/ruby2004

      $ cp /virtual/home/tmp/calc.rb .

      $ ruby calc.rb

      操作方法は,ターミナルにキーボードから次のような規則で入力して計算を行い ます.

      123 + 234

      最初に数字,次にスペースを空けて演算記号(+ - * / %),そして再び スペースを空けて数字です.中央の記号の部分に q (小文字のq)を入 力すると終了します.

      スクリプト

    • 逆算タイマー?

      時間(分)をセットすると逆算して残り時間を教えてくれます.使い方は,先ほど と同様に

      $ ruby timer.rb 1

      のようにして,時間を数字でセットします.

      スクリプト


 目次に戻る  前のページへ