0コメント

【シェルスクリプト→Ruby】ちょっと真面目にサーバー用のスクリプト書きなおす。つもりだった。 #2

前回のあらすじ

挫折した。

 ということで、結局Rubyを触ってみようかなとか思ってる。ちょっとインストールにてこずったけど、ちょっと古い情報を見ていたらしく不要な手順を踏んでしまっていたりして、まあ結局どうにかはなった。

 という訳でRubyで書いていこうかなと。

スクリーンショット 2021-12-11 174002.png

普通はputsでよさそう


 ・・・この記事を記述(というかこの数行とスクショしか記述していなかったが)して約二週間が経過した。


 結局大学にいる間も記述して、割と最低限のことはできるようになってきたかなって感じ。

Pythonと違うところをまとめてみる
〇try(try-catch)文→beginとrescueを使って記述する。
try ... except エラー as eでeに内容を取得する事が出来るが、Rubyだとbegin ... rescue エラー => e で取得する事が出来る。

〇破壊的メソッドが目視で分かりやすい
Pythonだとsort()とかreverse()といったメソッドが実行した対象の変数(やリスト)に対して直接変更する(=結果を返り値として返すわけではない)破壊的メソッドに当たるのだが、ぱっと見値を返すのか破壊的メソッドなのか分かりづらい。

それに対し、Rubyの場合はsort()の場合はソートした配列を返り値として返すし、sort!()とすれば破壊的メソッドになる。reverse()も、reverse!()が存在する。この「!」が破壊的メソッドを指すのだ。視覚的に分かりやすいね。

〇なんか面白い書き方があった
Pythonでいう「配列.append(中身)」で配列に要素を追加する事が出来るが、Rubyでは「配列.push(中身)」となる。
しかしもう一つ「配列 << 中身」といった書き方も出来る。どっちで記述する人の方が多いんだろうか。Pythonにはこういうの無かったはずだからちょっと面白い

あと辞書型をこういう使い方であっているのかよく分からないがPythonでも確かちゃんと使ったことが無かったから初めて使ってみた。Pythonでは「dict型」Rubyでは「Hash」と呼ばれる。

〇なんか見た目がPythonよりスッキリな気がする
これはメソッドを増やす意識をしたからかもしれないし分らんけど。

〇Rubyでは基本for文はいらない!?
これが一番びっくり。例えば「五回実行してね」をPythonで書くなら「for i in range(5):」とかける。これをRubyで書くと「(5).times do |i|」だ。
「配列の要素の中身でループさせてね」なら
Python : for i in 配列:
Ruby : 配列.each do |i|
「配列の要素数でループしてね」なら
Python : for i in range(len(配列)):
Ruby : 配列.size.times do |i|

あと
配列.each_with_index { |s, x| ...  }で配列の要素でループさせながらsに要素の中身を、xにインデックスを代入するという物も。
paizaプログラミングスキルチェックをやってて、timesとeach,each_with_indexを滅茶苦茶使ってる。

Rubyのこのループの書き方がなんとなくクセになる。分かりやすいというか、直感で書けるというか。

〇データ型変換
int型データをstring型に変換するのであれば、Pythonでは「str(変数)」と記述するが、Rubyだと「変数.to_s」となる。
逆も然り、「int(変数)」を「変数.to_i」と記述する。
なんかPythonってカッコが大量になるイメージがある。それを避けられるのが個人的に高評価。

ただスクリプトはまだ完成していないので、また近いうちに#3としてスクリプトを紹介していこうかなと思う。
0

この記事へのコメント