Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第1回セントラルソフトRuby研究会

1,751 views

Published on

セントラルソフト社内で行っいる若手による社内勉強会の資料です。

Published in: Education
  • Be the first to comment

第1回セントラルソフトRuby研究会

  1. 1. Ruby研究会 システム1部 システム開発課 高田健太郎
  2. 2. 目次 1. Silver,Gold出題範囲 2. コマンドラインオプション 3. 変数と定数 ①変数の種類②グローバル変数③インスタンス変数 ④クラス変数⑤ローカル変数 擬似変数 定数 4. 例外処理 5. ブロック
  3. 3. 1.Silver・Gold出題範囲 実行環境 ・ 実行方法 ・ コマンドラインオプション ・ 環境変数 ・ irb 文法 ・ コメント ・ リテラル ・ 変数/定数とスコープ ・ 演算子 ・ 条件分岐 ・ ループ ・ 例外処理 ・ メソッド呼び出し ・ ブロック ・ メソッド定義 ・ クラス定義 ・ モジュール定義 組み込みライブラリ ・ 組み込み関数 ・ 組み込みクラス オブジェクト指向 ・ ポリモルフィズム ・ 継承 ・ mix-in Silver Gold 実行環境 ・ コマンドラインオプション ・ 組み込み変数/定数 文法 ・ 変数と定数 ・ 演算子 ・ ブロック ・ 例外処理 ・ 大域脱出 オブジェクト指向 ・ メソッドの詳細 ・ メソッドの可視性 ・ クラスの詳細 ・ クラスの継承 ・ モジュールの詳細 組み込みライブラリ ・ よく使用されるクラス(Object、Kernel、Module 等) ・ よく使用されるモジュール(Enumerable、 Comparable等) ・ 数値 ・ 正規表現 標準添付ライブラリ ・ よく使用されるライブラリ(socket、rdoc等)
  4. 4. コマンドラインオプション -C directory スクリプト実行前に指定されたディレクトリに移動します。 -d --debug デバッグモードでスクリプトを実行します。$DEBUG を true にします。 -h --help コマンドラインオプションの概要を表示します。 -I directory ファイルをロードするパスを指定(追加)します。指定されたディレ クトリはRubyの配列 変数($:)に追加されます。 -l 行末の自動処理を行います。まず、$ を $/ と同じ値に設定し, printでの出力 時に改 行を付加するようにします。それから, -n フラグまたは-pフラグが指定されていると gets で読み込まれた各行の最後に対して String#chop!を行います。 -n while gets ・・・ end と同じ動きをする。 -T[level] 不純度チェックを行います。level を指定すると安全度レベルをその レベルに設定しま す。level 省略時は 1 を指定したのと同じです。 CGIプログラムなどでは-T1 程度を指 定しておく方が良いでしょう。 $SAFE に指定したレベルがセットされます。 -W[level] 冗長モードを三段階のレベルで指定します。 * -W0: 警告を出力しない * -W1: 重要な警告のみ出力(デフォルト) * -W2 or -W: すべての警告を出力する
  5. 5. 変数の種類  グローバル変数 :プログラムの どこからでも参照できる 初期値はnil  インスタンス変数 :そのクラスまたは、 サブクラスのメソッドから参照できる  クラス変数 :クラス変数はクラス定義 の中で定義、 クラスのインスタンスメソッドなどから参照 代入が可能  ローカル変数 :メソッド内などの特定の範囲でのみ 使用される変数  擬似変数 :通常の変数以外
  6. 6. グローバル変数入力 $var = 10 def sample p $var end p $var 出力 10 1. $から始まる変数 2. プログラムの どこからでも参照可能 3. 宣言の必要はない。 4. 初期化されていない場合の値は nil
  7. 7. インスタンス変数入力 class Sample def initialize(width = 100, height = 100) @width = width @height = height end attr_accessor :width, :height end sample = Sample.new(150, 250) p sample.width p sample.height 出力 150 250 1. @で始まる変数 2. 特定の オブジェクトに所属している 3. そのクラスまたはサブクラスのメソッドから参照可能 4. 初期化されていない時の値はnil 5. 直接に読み込む・変更することは不可
  8. 8. クラス変数入力 class Sample @@cvar = 0 def initialize(width = 100, height = 100) @width = width @height = height end def cvar; @@cvar; end def cvar=(x); @@cvar = x; end attr_accessor :width, :height end sample = Sample.new(150, 250) sample.cvar = 300 sample1 = Sample.new(10, 20) p sample.width p sample1.width p sample.cvar p sample1.cvar 出力 150 10 300 300 1. @@で始まる変数 2. クラス変数はクラス定義の中で定義される 3. クラスの特異メソッド、インスタンスメソッドなどから参照・代入が可能
  9. 9. ローカル変数入力 2.times { p defined?(v) v = 1 p v } 出力 nil 1 nil 1 1. 小文字または_で始まる識別子はローカル変数またはメソッド呼び出し 2. ローカル変数スコープ(クラス、モジュー ル、メソッド定義の本体)における小文字 で始まる識別子への最初の代入はそのスコープに属するローカル変数の宣言 3. 宣言されていない識別子の参照は引数の無いメソッド呼び出しとみな される。
  10. 10. 擬似変数 self 現在のメソッドの実行主体 nil NilClassクラスの唯一のインスタンス true TrueClassクラスの唯一のインスタンス。真の代表値 false FalseClassクラスの唯一のインスタンス。nilとfalseは偽を表す。 __FILE__ 現在のソースファイル名 __LINE__ 現在のソースファイル中の行番号 擬似変数は、値を変更できないので注意!
  11. 11. 定数 1. アルファベット大文字 ([A-Z]) で始まる識別子 2. 定数の定義 は代入によって行われる 3. メソッドの 中では定義不可能 4. 一度定義された定数に再び代入を行おうと すると警告メッセージが出る 5. 定義されていない定数にアクセスすると例外 NameError が発生 入力 class Foo FOO = 'FOO' end class Bar < Foo BAR = 'BAR' p FOO class Baz p BAR end end 出力 FOO BAR
  12. 12. ブロック入力 class Array def my_each for i in 0...self.length yield(self[i]) end end end [2,4,6].my_each{|x| puts x} 出力 2 4 6 ※yield:自分で定義したブロック付きメソッドでブロックを呼び出すときに使う
  13. 13. 例外処理 入力 begin puts '足し算' print "x:"; x = gets.chomp print "y:"; y = gets.chomp puts "x + y = #{Integer(x) + Integer(y)}" rescue StandardError => ex p ex puts ‘error文を確認して再入力してください' retry ensure puts '足し算の終了' end 出力 足し算 x:w y:q #<ArgumentError: invalid value for Integer(): "w"> error分を確認して再入力してください 足し算 x:w y:q #<ArgumentError: invalid value for Integer(): "w"> error文を確認して再入力してください 足し算 x:1 y:4 x + y = 5 足し算の終了 出力 x→c y→s を代入 x→8 y→1 を代入

×