◆ 複数値を返すだけでも一苦労
◆ タプルほしい

動的言語好きなので毎回使っては静的言語が使いづらいと思ってますが 今回は複数の値を返したいときです

一つの文字列を返してた関数で 数値と文字列の 2 つを返したくなりました
JavaScript なら配列で 2 つ返したりオブジェクトで名前をつけて 2 つの値を返したりできます
特に困ることもなくよくやるものです

それが静的言語になると結構不便です
その場で定義した匿名型があってもそれを返り値の型として定義できないので使えません
C# の dynamic みたいなものは使わないとします
かと言ってそこでしか使わないものに名前をつけて class 定義してインスタンスを作るのもなんか嫌です
あちこちで使う前提なら NumStr 型とか NumStrStr 型とか NumNum 型とかありがちな組み合わせで汎用型として作っておくのもありかもですけど

そうなると配列ですが 異なる型を組み合わせられません
やろうとすると何でも入る object 型のような型として配列を定義することになります
そうすると取り出すときにキャストが必要で扱いづらいです
連想配列や Dictionary といった型があっても値の型が混在すると同様の問題が起きます

どうしてたかだか複数の値を返すだけでこんな面倒なことをしないといけないのでしょうか
これだから型の制限を強く受ける言語は扱いづらいのですよね


一応ベストな方法もあって それがタプルです
異なる型を複数組み合わせた型を簡単に作れます
使える言語だとすごく助かる機能なのですが 全部の言語にあるわけでもないです
C# でも 7.0 で結構最近だった気がしますし

そもそも返り値型を自分で明示しなくても return を見て自動判定してくれればいいのですけどね