ソースコード
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(); }
拡張メソッドを使えばローカル変数の定義が不要になります