以下の内容はhttps://baba-s.hatenablog.com/entry/2022/09/10/192928_1より取得しました。


【Unity】Debug.Log をメソッドチェーンで書けるようにする拡張メソッド

ソースコード

using UnityEngine;

namespace Kogane
{
    public static class DebugLogMethodChainingExtensionMethods
    {
        public delegate void LogDelegate( object item );

        public static LogDelegate OnLog        { get; set; } = item => Debug.Log( item );
        public static LogDelegate OnLogWarning { get; set; } = item => Debug.LogWarning( item );
        public static LogDelegate OnLogError   { get; set; } = item => Debug.LogError( item );

        public static T DebugLog<T>( this T self )
        {
            OnLog?.Invoke( self );
            return self;
        }

        public static T DebugLogWarning<T>( this T self )
        {
            OnLogWarning?.Invoke( self );
            return self;
        }

        public static T DebugLogError<T>( this T self )
        {
            OnLogError?.Invoke( self );
            return self;
        }
    }
}

使用例

public string GetDisplayName()
{
    var id   = 25;
    var name = "ピカチュウ";

    return $"{id}: {name}";
}

たとえば上記のような関数で戻り値の値をログ出力したい場合、

public string GetDisplayName()
{
    var id   = 25;
    var name = "ピカチュウ";

    var result = $"{id}: {name}";
    
    Debug.Log( result );

    return result;
}

通常であればこのようにローカル変数を定義する必要がありますが

public string GetDisplayName()
{
    var id   = 25;
    var name = "ピカチュウ";

    return $"{id}: {name}".DebugLog();
}

拡張メソッドを使えばローカル変数の定義が不要になります




以上の内容はhttps://baba-s.hatenablog.com/entry/2022/09/10/192928_1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14