diff python ruby
こういうのありがたいね。
上記の内容に関して一つ一つ感想を述べる
むむ!文字列が文字列自身で変化していくイメージをもてていない 定数(値が変更されることを期待しない変数)をつくれます。 ありがたい
名前付けについての規約がいくつかあります。 たとえば、クラス名は大文字から始め、変数名は小文字で始めます。
Pythonもまあそうだけど明確に規約としてくれてるのはありがたい リストコンテナは、配列しかありません。配列は可変です。
freeze使えばいいから?同じクラスなので確認しづらいような気もする 3.6から式展開みたいなのはできるようになった(たしか結局formatのラップのようらしい)。
rawを頭にrの方が二重か一重かより分かり易いが、Pythonみたく二重一重どちらでもいいよーもまあ複雑よね
クラスに新しいスタイル・古いスタイルといったものはありません (Python3からはこの問題はなくなりました。けれど、Python2との完全な後方互換性はありません)。
Python2の話はよしてくれ
属性には直接アクセスできません。 Rubyでは、属性へのアクセスはすべてメソッド経由になります。 安全
メソッド呼び出しの括弧は基本的にオプションです。
メンバをさすのかメソッドをオブジェクトとして捉えるのかわかりづらくなるからやだ
暗示より明示なのにアンスコよくないよね
わからん
組み込みクラスにメソッドを追加したり、書き換えたりできます。 どちらの言語でも任意の時点でクラスを開いたり編集できますが、 Pythonでは組み込みクラスに対してはそれは許可されていないのに対し、 Rubyではその制限はありません。 許可しないほうが意図してない仕様になって良いと思うが、出来たほうが遊べそうではある
どっちでもいい
真か偽かの判定では、falseとnilのみが偽と評価されます。 それ以外の値(0、0.0、""、[]など)はすべて真と評価されます。 0とか空になったらおわりみたいなのがしづらそうだが、わかる
どちらもelse ifでいいやん
from hoge import * にされるのはやだ
(docstring の代わりに)クラスやメソッドの直前に書かれた複数行のコメントは、 ドキュメント生成に使われます。 クラスやメソッドの中に書かれたほうがそいつの持ち物とわかりやすい
たくさんの省略記法があります。けれど、すぐに手になじむはずです。 それらはRubyをより楽しく生産的に使えるようにするために用意されています。
一度定義した変数を、(Pythonでいうdelのように)未定義にする方法はありません。 変数をnilで設定すれば、変数に入っていた値をGCできるようにはできますが、 スコープが存在する限り変数自体はシンボルテーブルに残り続けます。 yieldキーワードの振る舞いは異なります。 Pythonでは、関数呼び出しの外側のスコープへ実行結果を返します。 そのため、外側のコードは処理の再開について責任を負います。 Rubyでは、yieldは最後の引数として渡された別の関数が実行されます。 そして、実行が完了すると処理を再開します。 使ってみねばどういいのかわからん
Pythonがサポートしている無名関数はラムダ式のみですが、 Rubyはブロック、Procオブジェクト、ラムダ式といった種類の無名関数があります。 1種類でいいよ