#目的
・Rubyの基本を理解し、他人のコードを読めるレベルに到達する。
・基本を整理しつつ、Javaとの違いを関連付けをしたい。
(・Qiitaデビュー)
#動確環境
OS: Mac
Version: 2.6.8p205
#基礎知識
##全てがオブジェクト
文字列、配列はJava同様にオブジェクト。
さらには、数値、真偽値、nil(Javaではnull)、正規表現等もオブジェクト。
なので以下のように、それぞれに対してto_sメソッドでオブジェクトから文字列化することも可能。
true.to_s
nil.to_s
##文の区切り
基本的に文の区切りにセミコロン不要、改行でよい。
1行に複数の文を記述したい場合に明示的に;で区切ることは可能。
##コメント
◯1行コメント
Java: //
Ruby: #
◯複数行コメント
/*
Javaコメント
*/
=begin
Rubyコメント
=end
##変数
###型定義
動的型付け言語なので、宣言時のデータ型記述は不要。
(慣れないうちはコーディングしてて不安になる)
str = 'hello'
int = 10 * 10
型宣言していないので異なるデータ型を代入できてしまうので注意が必要。
###命名慣習
Javaではキャメルケースが多いが、Rubyではスネークケースが慣習。
snake_variable = 'スネークケース'
##文字列
シングルクオートとダブルクオート
Javaでは1文字の場合を除きダブルクオートで囲むが、
Rubyでは以下の違いがある。
・シングル -> 特殊文字をそのまま出力。
・ダブル -> 特殊文字の適応。文字列内での式展開。
# 特殊文字
puts 'hello \n world' #改行されないで/nごと出力。
puts "hello \n world" #改行される
# 式展開
name = "ボブ"
age = "F"
puts "私は#{name}です。#{age.to_i(16)}歳です。" # name、ageに式展開されてから入る
#私はボブです。15歳です。
### 文字列同士の比較
Java: "AAA".equals("AAA");
Ruby: "BBB"== "BBB"
数値
###インクリメント・デクリメント
Rubyには++、--演算子が使えない。
Java: n++;
Ruby: n += 1
他はJavaと大きな違いはない印象。
真偽値と条件分岐
Rubyでは、Javaと異なり以下のルールがある。
・false、nilであれば偽。
・その他は全て真。
# 以下のものは全て真
1
-1
'false'
''
nilを偽で使うケースは、データの有無で処理を分けたい時に便利。
# データを取得するような関数
data = find_data(hoge)
if data
puts "データあり"
else
puts "データ無し"
end
if文
・全体的に、Javaのifからカッコを無くした感じ。
・"else if"が、"elsif" になっている点に注意。
・終わりにendの記述。
・最後に評価された式を戻り値として返す。
if 条件a
#処理a
elsif 条件b
#処理b
else
#処理c
end
# 最後に評価した式を返す。
age = 20
result =
if age < 20
"未成年"
else
"成人"
end
puts result # 成人
また、ifを修飾子として書くこともできる。
(英語っぽい書き方だね)
point = 3
day = 1
point *= 5 if day == 1
puts point # 15
メソッド
###定義
・Javaから{}を無くした感じ。
・def,endを記述。
・戻り値の型宣言はやはり不要。
・引数が必要ない場合は、省略可能。
def greeting
"こんにちは!"
end
達筆中、、、
#参考文献
・プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus)