目的と内容
学習内容の整理と後日の参照用。他者へのポートフォリオ用。
今回はRuby文法のまとめ。
基本
コメント
1行の場合#シャープ以下はコメントになる
下記でも、コメントアウトにはなるが、こちらはソースコードにドキュメントを埋め込むための記述=begin
beginとend間のドキュメントが埋め込まれる
=end
メソッド
puts
画面に出力するためのメソッド、文末で改行される
print
画面に出力するためのメソッド、文末で改行されない
Random#rand()
引数を渡さない(もしくは引数が0)の場合、0以上1未満の浮動小数点数をランダムに生成するメソッド
rand(1..10)など、括弧内で生成する値の範囲を決められる
分岐
if条件式処理elsif条件式処理else処理end
繰り返し
forカウンタ変数in 繰り返し範囲(配列でもOK)処理end
while条件式処理カウンタ変数を更新end
型の変更
- to_i 整数へ
- to_f 浮動小数点数へ
- to_s 文字列へ
- to_a 配列へ
- to_h ハッシュへ
標準入力
example=gets
他、chomp(末尾の改行を取り除くメソッド)と併用することが多そう。
配列
exarray=[値,値,値,値]#代入exarray.push(値)#末尾に値を追加exarray.detete(0)#0番目を削除
各要素をループで取り出したい場合
exarray.eachdo|変数名|処理endexarray.eachdo|変数名、変数名2|#インデックス番号も一緒に取得したい場合処理end
メソッド
Array#map()
配列の各要素に同じ処理を加えたい場合
String#split()
指定の記号で分割し、配列として戻す
Array#sort
要素が<=>
で比較可能であれば並び替える
Array#reverse
配列を現在と逆の順序に並び替える
ハッシュ
exhash={値=>値,値=>値,値=>値}
キーにシンボルを使った場合、下記のようにも記述できる。
exhash={:値=>値,:値=>値,:値=>値}#またはexhash={値:値,値:値,値:値}
各要素をループで取り出したい場合
exhash.each_valuesdo|変数名|処理endexhash.eachdo|変数名,変数名2| #キーも一緒に取り出したい場合処理end
メソッド
defexmethod()処理end
メソッド内で定義された変数は独立している。
外から同じ名前の変数を使いたい場合は、\$exampleのように\$マークを先頭につけたグローバル変数をつかう必要があるが、これはあまり使われない。
クラス
基本
classExclass@@exclass#クラス変数(よくわかっていないattr_accessor:examdefinitialize(exam)#初期化メソッド(必ず実行される@exam=exam#インスタンス変数(よくわかっていないendend
クラス名の最初の一文字は必ず大文字にする。
attr_accessor : ◯◯はインスタンス変数を外から変更できるようにするためのコード。(よくわかっていない)
継承
親クラスのメソッド、変数を子クラスでもつかえる。
オーバーライド
親クラスが持つメソッドを、子クラスで再定義して上書きできる。
private
頭にprivateを付け加えられたメソッドはクラス内からしか呼び出せない。
superメソッド
親クラスの持つメソッドを呼び出す。
その他
ライブラリの読み込み
require 'ライブラリ名'
モジュール
moduleモジュール名defメソッド名()endmodule_function:メソッド名end
モジュールはオブジェクトを作らず、メソッドをそのまま実行することができる。
その場合、『module_function :メソッド名』という記述が必要。
下記、Mix-inを使う場合、『module_function :メソッド名』の記述はつけてはいけない。(よくわかっていない部分
Mix-in
classクラス名includeモジュール名end
例外処理
beginエラーが発生する可能性のある場所rescueエラーが発生した場合elseエラーが発生しない場合ensureエラーの有無に関わらず行う処理end
その他
・コマンド
ファイル名やフォルダ名にスペースが入ってる場合、コマンドでは””を含めて記述
ex) cd "new project"
コマンドラインから現在いる場所をFinderで開きたい場合(Mac)open .