|
Hello, world!
- Ruby版 (hello.rb)
- C#版 (ConsoleApplication1.cs)
1
2
3
4
5
6
7
8
9
10
11
12
|
-
|
-
|
-
|
!
!
!
| using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
|
- Rubyはオブジェクト指向でもあり手続き型でもあり。よって、文字出力は1行ですんでしまいます。
- 1行の中でもRubyの場合はC#に対応する暗黙の了解がいくつかあります。
- C# の「参照設定」+ using と Ruby の require + include
- Ruby では Kernel が暗黙的に require ならびに include されています。よって、Kernel.puts などと意識しなくても「組み込み関数」として好きなときに呼び出せます。
- C# では System 名前空間が暗黙的に「参照設定」されていますが、using しないと System.Console.WriteLine と書かなくてはいけません。
- Rubyには module という考え方があります。
- Hello, world レベルの場合は考えなくてもいいです。
- C# の場合は、どのクラスでも必ず名前空間(namespace) に所属していなければなりません。(ASP.NET のコードのように名前空間を明記しなくてもよいケースもあります)
- Ruby ではいきなりコードを書き始めると (C や C# でいう)) main/Main 相当と見なされます。
- C# の場合は Main() メソッドの定義が必ず必要です。
- Ruby では Hello の表示に Kernel.puts (省略形 puts) を使います。
- C# では Hello の表示に System.Console.WriteLine (省略形 Console.WriteLine) を使います。さすがに WriteLine だけだと文法エラーです。
- Rubyではメソッド呼び出しの際に () をつけてもつけなくてもいいです。puts "hello" も puts("hello") もどちらも許容します。
- C# ではメソッド呼び出しの際の ( ) は必須です。
- Rubyでは、文の終わりは改行ならびにセミコロンです。必ずしもセミコロンは必要ありません。
- Rubyではセミコロンはつけてもつけなくてもいいですが、省略した方がすっきりします。
- Rubyで次の行に文が続く場合は、行末に \ 記号を明示すべきです (一部のケースでは \ の省略をしても正常動作することがあります)
- C# の場合は、メソッドの終わりは必ずセミコロンが必要です。その代わり、改行は比較的自由に使える傾向にあります。
- Ruby では begin end (または、begin のかわりに if や def 等) が基本。
- Ruby にも { } はありますが、C# とは別の意味に予約されています (式展開)
- C# では { } が基本
- Ruby ではコマンドライン引数は予約された変数 ARGV (配列型で、実質 String の配列と見なせます)に代入されます。
- 第1引数は ARGV[0]、第2引数は ARGV[1] ...で取り出せます。引数がないのにコマンドライン引数を参照した場合は nil が返ります。ARGV.size で引数の数が(ARGV.size.zero? が true か false かで引数有無チェックも)できます。
- C# では第1引数は args[0]、第2引数は args[1]...で取り出せますが、引数無しで参照した場合は IndexOutOfRangeException 例外が発生してしまいます。args.Length 値が1以上であることを事前チェックしなければいけません。
|