More Related Content
Similar to C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1 (20)
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
- 6. Rubyを動かそう!
• RubyInstallerを使う (僕が普段windows使ってないので、詳しいことはわかりません><)
• RubyInstaller http://rubyinstaller.org/
• 自分でビルドする場合は以下の電子書籍が参考になるらしい。
• Ruby環境構築講座 Windows編 http://tatsu-zine.com/books/winrubybuild
"
$
Windows
OS X
Linux
• 最初から入ってる。
• 本格的に使うなら rvm や rbenv の様な Ruby のバージョン管理ツールを使ってインストールす
るのがオススメ。複数バージョンの Ruby をインストールし、切り替え可能。
• 日本だと rbenv の方がよく使われている印象。僕も rbenv 使ってます。
• rbenv https://github.com/rbenv/rbenv
• rvm https://rvm.io/
• OS X と同様に rbenv や rvm を使ってインストールするのがオススメ。
参考: Rubyist Magazine - Rubyの歩き方 http://magazine.rubyist.net/?FirstStepRuby
- 14. Cの例
#include <stdio.h>
void times(int times , void (*func)(int));
void myfunc(int i);
int main() {
times(10, &myfunc);
return 0;
}
void times(int times , void (*func)(int)) {
for(int i = 0; i < times; i++) {
func(i);
}
}
void myfunc(int i) {
printf("%i: Hello, World!n", i);
}
- 20. Hello, World!
class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
#include <stdio.h>
int main() {
printf("Hello, World!n");
return 0;
}
puts 'Hello, World!'
- 21. 変数宣言
int num = 1;
num = 1
• Rubyの変数には型がない。整数を入れた変数
に、後から文字列を代入することも出来る。
- 22. 条件分岐
# if
if num.even?
puts '偶数だよ'
elsif num.odd?
puts '奇数だよ'
else
puts 'ほげー'
end
# unless
unless num.even?
puts '奇数だよ'
else
puts '偶数だよ'
end
# 後置
puts '偶数だよ' if num.even?
puts '奇数だよ' unless num.even?
if (num % 2 == 0) {
printf("偶数だよn");
} else if (num % 2 != 0) {
printf("奇数だよn");
}
JavaはCとほとんど同じなので省略
- 23. ループ
array = [1, 2, 3, 4, 5]
array.each do |i|
puts i
end
int array[] = {1, 2, 3, 4, 5};
for(int i : array) {
System.out.println(i);
}
int array[] = {1, 2, 3, 4, 5};
int array_length = sizeof array /sizeof array[0];
for(int i = 0; i < array_length; i++) {
printf("%in", array[i]);
}
- 24. Rubyのループ
• while, for, loopといった構文もあるが、余り
使われない。
• eachメソッドを使うのが基本。
• Arrayなどの繰り返し処理の対象となるクラス
はEnumerableモジュールがmixinされており、
mapやreduceと言ったメソッドも使える。
(長くなるので、割愛)
- 28. 多重継承へのアプローチ
!
%
Interface
• APIが宣言された Interface をクラスに追加
し実装することで、クラスを拡張する。
• Java8からインターフェースが実装を持てる
ようになったため、RubyのMixinと同じこ
とが出来るようになった??
• 参考: http://equj65.net/tech/java8mixin/
Ruby
Java
Mixin
• 機能が定義されたそれだけではインスタンス
を生成できないModuleをクラスに追加し、
拡張する。
- 29. private, protectedの違い
!
%
• クラス内のみアクセス可能
• クラス内、同一パッケージ、サブクラスから
アクセス可
Ruby
Java
• レシーバ無しでしか呼び出せない
• そのメソッドを持つオブジェクトが self である
コンテキスト(メソッド定義式や instance_eval
)でのみ呼び出せる
参考: Ruby ¦ Ruby の private と protected 。歴史と使い分け - Qiita http://qiita.com/tbpgr/items/6f1c0c7b77218f74c63e
違うと言う事だけは覚えておきましょう。