2
0

More than 1 year has passed since last update.

python 使いの ruby メモ

Posted at

概要

python と ruby はメソッドなどは大体同じなんですがちょいちょい違うところがあるので個人的な備忘録として作成しました。随時加筆します。

ruby メモ

文法・作法

  • : はいらない
    • python だと定義文やコンテキストブロックを作るときに必要だが ruby は不要
  • if elsif else end
    • python だと if ブロックを閉じるときはインデントを抜けるだけだが ruby は終了範囲を明示的に end で指定する必要あり
  • return は書かない
    • 書いてもエラーは起きないが慣習的に書かない
    • 関数 / メソッドの最後に評価された値が勝手に戻り値になるので明示的に書かなくてよい
  • unless
    • python で書くなら if not
  • case when
    • case state when value で条件分岐を書ける。複数条件あるときに便利
    • python だと match case に相当。3.10 以降で実装
  • 関数 / メソッド定義時・呼出時に引数がないときは () を省略可能
    • 定義時・呼出時いずれも () を書いてもエラーは起きない
    • python で同じことやるとメソッドだよ〜と言われるだけでメソッドが呼び出されずに終わるところが呼出しになる
  • メソッド呼出後に ! をつけると inplace 処理
    • pytorch でいうメソッド末尾の _ みたいなもの
    • 全てのメソッドに実装されてるのかは不明
  • ? 付きのメソッドは bool を返す
    • クエスチョンマークの初見の違和感がすごい

基本オブジェクト

配列

python にも同じ機能はあるが表現が違う

  • include?(x)
    • x が配列に含まれるか否かの bool を返す
    • python で書くなら x in list
  • empty?
    • 配列が要素を持っているかの bool が返る。len(list) > 0 と等価
  • shuffle
    • 配列をランダムシャッフルする。random.sample(list, len(list)) と等価
    • python の random.shuffle は inplace 処理なので微妙に違う
  • (start..end).to_a
    • start から end までの配列を作成する
    • python だと list(range(start, end+1)) とか [i for i in range(start, end+1)]。end が1ずれるので注意
  • list << x or push(x)
    • 配列末尾に x を追加する。python だと list.append(x)
  • shift
    • 配列の最初の値を削除して戻り値として返す。python だと list.pop(0)
    • 全ての配列要素の index が shift するからこの命名かと思われる
  • uniq
    • 配列のユニークな要素を返す。たぶん配列の順番を破壊しない
    • python で配列の順序を破壊して良い場合は list(set(list)) で実現できる。順序を破壊しない場合は unique のフラグを管理しつつループで先頭からチェックしていくとかになる気がします
  • join
    • 要素が文字列の配列を結合する
    • python の場合 string.join(list) になるか
  • size
    • 配列の要素数を返す。python だと len(list)

python に同名メソッドがあるが挙動が違う

  • reverse
    • ruby は inplace ではない
    • python は inplace 。互換なのは reversed(list)

メモ

  • ruby 教材としては以下の講座を使わせていただきました
  • inplace 処理が ! で表現できるのは統一的で良いなと思った
2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0