Tsuの雑記¯\_(ツ)_/¯

主に製作メモ・備忘録として使用。製作したアプリのリンクもあります。

【Unity】配列やリストや文字列の末尾を取得する【拡張メソッド】

過去に公開した2つの拡張メソッドを,1つのクラスにまとめました。

(Unity 2018.3.0f2)

tsu-games.hatenablog.com

tsu-games.hatenablog.com

スクリプトの用意

まずは,拡張メソッド用のスクリプトを用意します。

unity3d.com

使用例

NewBehaviourScript.cs

// List<> を使うため
using System.Collections.Generic;
// Last クラスの拡張メソッドを使うため
using TsuGames;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    void Start()
    {
        var string1 = "string1";
        Debug.Log(string1.LastChar());
        // string2
        var string2 = "string2";
        Debug.Log(string2.LastChar(0));
        // string3
        var string3 = "string3";
        Debug.Log(string3.LastChar(-1));
        // 整数配列
        var ints = new int[] { 0, 1, 2 };
        Debug.Log(ints.LastElement());
        // 小数配列
        var floats = new float[] { 0.1f, 1.1f, 2.1f };
        Debug.Log(floats.LastElement(0));
        // 文字列リスト
        var strings = new List<string> { "a", "b", "c" };
        Debug.Log(strings.LastElement(-1));
        // ベクトルリスト
        var vectors = new List<Vector3> { Vector3.zero, Vector3.one, Vector3.one * 2 };
        Debug.Log(vectors.LastElement(1));
    }
}

UnityEditor の Console 画面にログが表示されている画像
LastChar(), LastElement() それぞれの結果

解説

まずは名前空間TsuGamesを,usingディレクティブで指定します。

docs.unity3d.com

// Last クラスの拡張メソッドを使うため
using TsuGames;

その他メソッド等に関する解説は,過去記事にて御覧くださいませ。

tsu-games.hatenablog.com

tsu-games.hatenablog.com

Enumerable.Last メソッドとの違い

LINQLast()メソッドでも末尾要素を取得できますが,LastElement<T>()メソッドやLastChar()`メソッドは「末尾から○番目」を選べます。

docs.microsoft.com

短所は,Last()メソッドにあるような「条件に該当する要素の中で最後の物」という指定が出来ない点です。

可読性の補助が目的であるため,機能は絞った物となりました。

御要望がございましたら,機能の追加や変更も検討いたします。

以上,配列やリストや文字列の末尾を取得する拡張メソッドの御紹介でした。