hsimyu's diary

ゲームなどをします。

7/17 お座り一歩手前

7/17 (水)

数日前からぼんやり分かってきていたけど、我が娘、ほぼお座りしちゃっている気がする。はいはいポーズから左足を崩して尻をついて、左手で上体を支えたようなポーズになる。まだ 5 ヶ月半なのだが、自律移動始めるのも早いし身体が出来上がってるのかな。

仕事は終わりそうなやつを片付けていく作業。手元で再現できない不具合も報告されていて、ちょっと辛め。

娘はまあまあごきげん。ぐずってる時、抱っこするだけだと泣き続けるのだがスクワットを加えると一瞬で落ち着く説の成功サンプルがまた一回増えた。いける……これはいけるぞ!

ごはん

朝: オールブラン

昼: 鶏天

夜: 麻婆茄子のせうどん

C++: Null 条件演算子を書いてみる

C++でもNull条件演算子的なことがしたい - Qiita

Null Check を頑張る話。

マクロ化してもまだ冗長そうだなあ…… メンバを呼ばないなら && optional 使うことを前提にするならいい感じにかけそう。こんな感じに書けるといいのかな

    auto result = value | hoge();
    if (!result)
    {
        return;
    }
    DoSomething(result.value());

となると

    #include <iostream>
    #include <optional>
    
    template<class T, class U>
    auto operator| (std::optional<T>&& opt, U&& func) -> decltype(func(opt.value()))
    {
        if (!opt) {
            return std::nullopt;
        }
        return func(opt.value());
    }
    
    std::optional<int> f1()
    {
        return 0;
    }
    
    std::optional<int> f2(const int value)
    {
        return value * 2;
    }
    
    std::optional<std::string> f3(const int value)
    {
        if (value == 0)
        {
            return std::string{"This is Zero"};
        }
        
        return std::string{"This is not Zero"};
    }
    
    int main()
    {
        auto result = f1() | f2 | f3;
        
        if (!result)
        {
            std::cout << "error" << std::endl;
        }
        
        std::cout << result.value() << std::endl;
    }

こうか。

メンバを呼び出すのはラムダでいいとして、std::optional 以外と ptr チェックを一緒にやるのが難しいな……。関数テンプレートの特殊化はできないので、メタ関数で ptr チェックして optional用の operator| か ptr 用の operator| に振り分ければいい?

Unity: 状態管理フレームワーク UniTEA

Unityの状態管理フレームワークを作ってみた - Qiita

状態が変わるときは新しいModelを生成しましょう.

Immutable な管理をやりたいのは分かるけど、Unity でこれやるのは速度的にきつい気がするなあ…… 非同期処理と相性良さそうなのはグッド