トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

PythonistaのためのRuby入門 の変更点

 何かと比較される、PythonとRuby。とりあえずPythonをそこそこ使える人のためにRubyの基礎を説明するページです。

 ……いや、まだはじめたばかりですから、何も書いてないです。

*とりあえず"Hello World!"

>---Python---
>print "Hello World!"   # ~Python 2.x
>print("Hello World!")  # Python 3.0 ~
>
>---Ruby---
>print "Hello World!"
>puts "Hello World!"

カッコが絶対に必要なのは、Python3000のみ。Python2.x以前とRubyでは無くてもかまいません。

Pythonではダブルクォーテーションもクォーテーションも同じですが、Rubyではシングルクォーテーションではエスケープ文字を展開しません(Pythonのraw文字列に相当)

*入出力

>---Python---
>print raw_input()   # ~ Python 2.x
>print(input())       # Python 3.x ~
>
>---Ruby---
>
>puts gets

入力した文字をそのまま出力するスクリプト。カッコが無ければ、Pythonは関数オブジェクトそのものと判断されますが、Rubyは( )がついているものと判断されます。

-ポイント

Rubyでは、関数(メソッド)はオブジェクトではありません。Pythonで関数にあたる「実行できるオブジェクト」はブロックにあたります。メソッドのように、「オブジェクトに送られる」ものは「メッセージ」でありオブジェクトではない、というのが本来のオブジェクト指向プログラミング言語流ですので、RubyはPythonよりその点では「正統」です。(Pythonのように、全てがファーストクラスオブジェクトであるプログラミング言語は、他にはSchemeなどがありますが、Schemeはさらに+や-などの演算子もオブジェクトなので、徹底しています)

Rubyでも、Pythonのように( )をつけて明示的に関数/メソッドであることを表すこともできます。また、Rubyでは関数名と同じ名前の変数が存在できますので、このような場合には、( )をつけなければなりません(Pythonに慣れた方なら、全てつけてもよいでしょう)

>---Python風のRubyコードの書き方---
>puts(gets())