Top > Ruby > 比較 > CS

Hello, world!

  • Ruby版 (hello.rb)
      0
      1
    
    #!/usr/bin/env ruby
    puts "Hello, world!"
  • 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以上であることを事前チェックしなければいけません。

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:58:00 JST (1525d)