配列ではなく、キーと値のペアで構成されているデータを扱うには、普通ハッシュを使うかと思います。
それ自体は間違いではありませんが、ハッシュにしてしまうとゲッターメソッドが使えず、オブジェクトかハッシュかを意識しながら扱わなくてはいけません。
要するに、クラスにするまでもない一時的なデータでもオブジェクトのようにゲッターメソッドを使いたいのです。
このような場合にはStructクラスを使うときれいに書くことができます。
続きを読む配列ではなく、キーと値のペアで構成されているデータを扱うには、普通ハッシュを使うかと思います。
それ自体は間違いではありませんが、ハッシュにしてしまうとゲッターメソッドが使えず、オブジェクトかハッシュかを意識しながら扱わなくてはいけません。
要するに、クラスにするまでもない一時的なデータでもオブジェクトのようにゲッターメソッドを使いたいのです。
このような場合にはStructクラスを使うときれいに書くことができます。
続きを読む最近またkindleで本を読み始めました。
欲しい本をkindleで探して、買って、読む。
買うまでのハードルが低すぎてついつい買っちゃうんですよね。
もちろん、買って後悔した本もありますが、今日は買ってよかった本をランキング風に紹介したいと思います。
ちなみに、本体を買うならkindle paperwhiteじゃなくて、Fireタブレットが絶対オススメです。
ほんまにコスパ最強のタブレットです。去年だったか、父の日にプレゼントしてとても喜ばれました。
端末に本をダウンロードしてしまえば通勤電車で読めるし、一旦閉じても次に開いたときにはすぐに途中から読むこともできます。
付属のカメラがしょぼい意外は文句のつけようがないです。
Fire HD 8 タブレット (8インチHDディスプレイ) 16GB
Progateで勉強したSCSSの文法のまとめです。
「なんかcssをちょっと便利にしたもの」程度の理解しかなかったので、progateで勉強し、文法をまとめてみました。
通常のcssであれば
.header { width: 100%; } .header ul{ padding: 10px; }
と書いていたところを、
.header{ width: 100%; ul{ padding: 10px; } }
というように入れ子にして書くことができます。
続きを読むRubyではメソッド名の末尾に"!"や"?", "="のような非英数字文字を使うことができます。
"!"はメソッドの使用者に注意を促すとき、"?"はメソッドが真偽値を返すのを明示的に表したいときに使ったりします。
たまに、"!"を付けると破壊的メソッドになるとか、真偽値を返すメソッドには必ず"?"を付けなければいけないとか質問されているのを目にしますが、強制力もなければ、メソッド名でメソッドの中身が変わることもありません。
しかし、"="が付いたメソッドは少し特別な意味を持ちます。
続きを読む伝統的かどうかわからないが、RubyはJavaなどにあるようなコンストラクタを持っておらず、代わりにnewメソッドから呼ばれるinitializeという特別なメソッドを定義することによりオブジェクトを初期化することができます。
特に定義しなければ、BasicObjectクラスに定義されているinitializeメソッドが呼ばれますが、中身は空なので何も起こりません。
initializeメソッドもほかのメソッドと同じくようにメソッド探索を行い、最初に見つかったinitializeメソッドを実行します。
続きを読む親クラスの同名メソッドを呼ぶsuperについてです。
例えば以下のような場合
class User def login(acount, password) ~ログイン処理~ end end class AdminUser < User def login(password) ~ログイン処理~ ~固有の処理~ end end
AdminUserクラスではログインメソッドの中で、親クラスであるUserとログイン処理を共有しています。
同じ処理をなんども書きたくないので、親クラスのログインメソッドを呼びたい。そんなときに使うのがsuperです。
続きを読むRubyでは、継承しているクラスを上へ上へと昇りながらメソッド探索を行います。
一つ上のクラスはsuperclassメソッドで知ることができますが、モジュールをインクルードしたときはsuperclassで検出できず、しかしいつの間にかモジュールのメソッドが使えるようになっています。
今回はその仕組みを紐解いていきます。
そのためにまずは、オブジェクト、クラス、モジュールについて用語を復習しておきます。
続きを読む