2017-08-01から1ヶ月間の記事一覧

Ruby でメソッドの呼び出し元の情報を取得する

例えば、次のコードのように『A.hoge の呼び出し元の情報』を取得したいことがあります。 module A def self.hoge # 呼び出し元である X オブジェクトを取得したい end end class X A.hoge end 標準の範囲だとできなさそうだったんですが、binding_of_caller…

Ruby で任意のクラスが特異クラスかどうか判定する

Ruby で任意のクラスが特異クラスか判定しなーと思ってあれこれ考えていたんですが、そもそも Module#singleton_class? がすでに存在していました。 class X end p X.singleton_class? # => false p X.singleton_class.singleton_class? # => true p X.new.s…

Boost 1.65.0 がリリース

C++

Boost 1.65.0 がリリースされました。 Boost 1.65.0 では以下の2つのライブラリが新しく追加されました。 Boost.PolyCollection Boost.Stacktrace Boost.PolyCollection は抽象クラスに特化したコンテナで、Boost.TypeErasure などとも連携して使うことが出…

C++ で std::getline を使った split

C++

前回、std::regex を使った split を実装しましたが、今回は std::getline を使った実装です。 #include <iostream> #include <sstream> #include <vector> #include <string> int main(){ auto split = [](auto src, auto del){ std::istringstream stream{src}; std::string output; std::vect</string></vector></sstream></iostream>…

C++ で std::regex を使った split

C++

C++ で split が話題になっていたのでやってみた。 #include <regex> #include <iostream> #include <string> #include <vector> int main(){ auto split = [](std::string src, auto pat){ std::vector<std::string> result{}; std::regex reg{pat}; std::copy( std::sregex_token_iterator{src.begin(), s</std::string></vector></string></iostream></regex>…

C++17 で追加された std::conjunction/std::disjunction メタ関数

C++

知らなかったので覚書。 C++17 で std::conjunction と std::disjunction という2つのメタ関数が追加されました。 この2つのメタ関数はいずれも可変長テンプレート引数を受け取ります。 具体的にどのようなメタ関数なのかは以下のコードを見てください。 #in…

C++ のラムダ式を型推論しながら関数ポインタ型で受け取る

C++

ほぼ使うことはないだろうけど、かなりの知見だったので覚書。 ラムダ式を関数ポインタ型へ変換する これは割と一般的な知識だと思うんですが、『キャプチャしていない』ラムダ式は関数ポインタ型へとキャストする事が出来ます。 using func_t = int(*)(int)…

ここがすごいよ Hsakell の $ 演算子

最近ちょろっと Haskell を書いてて 『$ 演算子すげー』ってなったので勢いでまとめてみる。 Haskell に明るくないのでゆるふわな感じで書いていくよー。 (ちなみに $ 自体の具体的な解説はしない。 関数適用と演算子の優先順位 他言語をやってから Haskell…

Ruby で内部クラスを private にする

Ruby で内部クラスを private にする場合どうするのがよいかと思っていたんですが private_constant を使うのがいいみたい。 private_constant があるのでそれを使えばそれっぽい気がします https://t.co/79ySXXyQ7l— Pocke(ぽっけ) (@p_ck_) 2017年8月8日 c…

Ruby の hook メソッド一覧

Ruby から呼ばれる hook メソッドの一覧が欲しかったので Ruby 2.4 時点で定義されているメソッドをまとめてみました。 他にもあればコメント等で教えていただけると助かります。 Class クラス #inherited クラスのサブクラスが定義されたとき Module クラス…