Rubyのお勉強
Rubyの勉強をしたのでメモっておきます。
基本的な事ですが、ちょっと気になる部分があったので。
pythonと比較しながら勉強すると通じる部分があって理解が深まります。
今回は割りとRubyオリジナルな部分が多い気がしますが。
まずはif修飾子とかいうのについて
a = 7 b = 1 # bが1であればaを5倍にする if b == 1 a *= 5 end puts a # => 35
これは普通のif文の書き方。
if修飾子を使った場合
a = 7 b = 1 # bが1であればaを5倍にする a *= 5 if b == 1 puts a # => 35
pythonにはif文省略出来るのなかったと思いますけど、これ便利ですねー。
endがいらないのが私的に好きです。
内包表記的な感じかな? そこそこ使われるのでしょうか?
私は隙あらば使っていきたい文法の一つですね。
んで、お次はメソッドの戻り値について
pythonでは戻り値にはreturnを使いますが、Rubyでは使わないようですね。
なぜなら、最後に評価された式がメソッドの戻り値になるのが理由みたいです。
これが何だか違和感凄いんですよねー。
returnも使えるらしいのですが、使い所はpythonとは全然違います。
メソッドを途中で抜ける場合に使われることが多いそうです。
def greeting(country) # countryがnilならメッセージを返してメソッドを抜ける # (nil?はオブジェクトがnilの場合にtrueを返すメソッド) return 'countryを入力してください' if country.nil? if country == 'japan' 'こんにちは' else 'hello' end end puts greeting('japan') # => こんにちは puts greeting(nil) # => countryを入力してください
なんかメソッドを抜けるって言うのもあまりピンと来ないのですが、こんな使い方をするようです。
さりげなく出てきた、.nil?というメソッドにもちょっと驚きました。
こんなメソッドがあるとは。
returnの使い方はちょっと慣れないとしっくりこなさそうです。
最後に、メソッドの引数のカッコの省略です。
このカッコの省略はpythonにはないと思うので、これまたしっくり来ません。
引数のないメソッドなんかはカッコを省略して書く事が多いらしいです。
そもそも、putsとかprintとかもカッコ使えるけど省略してるらしいですね。
python3系はprintでもカッコがないとエラーを吐くので地味に違和感ありますね。
def say_hello 'へろー' end
こんな感じでカッコを省略するようです。
引数がある関数もカッコを省略出来るらしいのですが、これやめて欲しいですね(笑)
主流じゃないらしいですけど、そうゆう人もいるのかな?パっとみどこまでが関数なのか分かりづらそうです。
ちなみに、現在はこの本で勉強をしています。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
この本はある程度基礎が出来てればオススメらしいです。
Rubyはほどほどにpythonを頑張ります。