fjord/cherry.md
2024-03-16 22:40:05 +09:00

30 lines
3.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 3/16
Rubyの真偽値はfalseまたはnil以外はすべてtrueRuby固有の特徴
if文の戻り値を変数に代入できるgreeting = if country == 'japan' elsif...のように書ける
メソッド名はスネークケースで書くhello_world のような形式
%記法でエスケープが不要になる:%!unkoburi!のように囲える
ヒアドキュメント:<<-識別子 テキスト 識別子 の形式で複数行の文章を格納できる式展開も使える <<-を途中で使うとインデントされる引数として渡すこともできるヒアドキュメントを二つ使うと配列を作れるこれすごい便利じゃないか
配列の結合[10,20,30].join で全部くっつく
unlessifの逆 でもこれ逆に頭がこんがらがりそう
==true , ==false は冗長なので使わないそれはそうだ
case文絶対に使うべき局面でもなぜか忘却してif文を使ってしまう message = case xxx when 'yyy' end のように使う
三項演算子絶対に使うべき局面なのになぜか忘却して以下略 ? 真だった場合の処理 : 偽だった場合の処理 のように使う
メソッドにデフォルト値の引数を付けるdef greet(country = 'japan')などで引数なしでjapanが引数として扱われる。(x, y=xのようにするとyが無指定の場合にxと同じ値として扱われる
!で終わるメソッドは破壊的メソッドだがついていないからといって破壊的ではないとは限らないconcatは付いていないが破壊的
エンドレスメソッド定義 endがいらないdef greet = 'hello!'
lengthとsizeはどちらもまったく同じメソッドなにか違うはずだろと思っていたのに……
標準ライブラリと組み込みライブラリはイコールではない同じだと思ってた
putsとprintの差は改行の有無だがpはオブジェクトそのものがメソッドの戻り値になるp 123の後に123を参照すると123が戻ってくるputsの場合はnil)、ppはpよりも整形してきれいに出力してくれるpはオブジェクトをStringではなくinspectに変換している
配列で元の大きい添字を指定すると間の値はnilで埋められるa=[1,2,3] a[4]=50などとすると[1,2,3,nil,50]となる
配列はa << 2 などで最後に要素を追加できるコードを見た覚えがある割には自分で使ったことはなかった
削除はdelete.at(n)で行うdelete(n)だとnに一致する要素がまとめて削除される
divmodというメソッドは商と余りを配列で返す 14.divmod(3)[4,2]になる delete_ifメソッドを使うとdo |x|で条件を別に記述できる
Rubyプログラマはfor文を使わない確かに例文でほとんど出てこないので気にかかっていたたまたまかと思いきや本当に使わないのか
配列の要素を順番に取り出す作業はeachメソッド要素をどう扱うかはブロックブロックの中身に書くコードの役割ごっちゃになっていたのでようやく納得した
変数名の重複により他のものが参照できなくなることをシャドーイングという
do endの代わりに{}でブロックをくくることもできる僕が最初にうまく理解できなかった理由はこれだな
.mapを使うとブロックの戻り値が配列の要素となる新しい配列が作成されるnew = numbers.map { |n| n * 10}で配列numbersを10倍にした新しい配列が作れる
112ページまで
## 3/17