RubyにはPythonにはない、そしてその逆は何があるのですか?
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 PythonとRubyの議論はたくさんありますが、機能Xが言語Yを吸う理由、または言語YにXがないのに実際にはそうだと主張している理由がすべて逆転するため、私はそれらすべてがまったく役に立たないと思います。また、なぜPythonを好むのかについても正確に理解していますが、これは主観的なものであり、開発の趣味が私とは異なる可能性があるため、誰もが選択する助けにはなりません。 したがって、違いを客観的にリストすることは興味深いことです。したがって、「Pythonのラムダは最悪」ではありません。代わりに、PythonができないことをRubyのラムダができることを説明してください。主観なし。サンプルコードは良いです! 1つの回答にいくつかの違いがないようにしてください。そして、あなたが知っているものは正しいものに投票し、あなたが知っているものは間違っている(または主観的である)ものに投票してください。また、構文の違いは興味深いものではありません。Pythonはインデントを使用して、Rubyが角かっこで終了するのと同じように動作し、@はPythonではselfと呼ばれます。 更新:これはコミュニティWikiになりましたので、ここで大きな違いを追加できます。 Rubyのクラス本体にはクラス参照があります Rubyでは、クラス本体にすでにクラス(自己)への参照があります。Pythonでは、クラスの構築が完了するまで、クラスへの参照はありません。 例: class Kaka puts self end この場合のselfはクラスであり、このコードは「カカ」を出力します。クラス名を出力したり、他の方法でPythonのクラス定義本体(メソッド定義の外部)からクラスにアクセスしたりする方法はありません。 Rubyではすべてのクラスが変更可能です これにより、コアクラスの拡張機能を開発できます。以下は、レール拡張の例です。 class String def starts_with?(other) head = self[0, other.length] head == other end end Python(''.startswithメソッドがなかったと想像してください): def starts_with(s, prefix): return s[:len(prefix)] == prefix (文字列だけでなく)任意のシーケンスで使用できます。これを使用するには、明示的にインポートする必要があります(例:)from some_module import starts_with。 RubyにはPerlのようなスクリプト機能があります Rubyには、ファーストクラスの正規表現、$変数、awk / perlの行ごとの入力ループ、その他の機能があり、テキストファイルを変更したり、他のプログラムのグルーコードとして機能する小さなシェルスクリプトを作成するのに適しています。 Rubyはファーストクラスの継続を持っています callccステートメントに感謝します。Pythonでは、さまざまな手法で継続を作成できますが、言語に組み込まれたサポートはありません。 Rubyにはブロックがあります 「do」ステートメントを使用すると、Rubyで複数行の無名関数を作成できます。この関数は、引数としてdoの前のメソッドに渡され、そこから呼び出されます。Pythonでは、代わりにメソッドを渡すか、ジェネレータを使用してこれを行います。 ルビー: …