immutable structについて

投稿ツリー


このトピックの投稿一覧へ

なし immutable structについて

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/12/4 0:43
SHOO  管理人   投稿数: 658
immutable structの使い方についての議論です。

immutable structはとても使いにくいものだと思うのですが、その理由は、代入できない事につきます。
immutableなのだから当たり前なのですが、これに起因して問題が生じます。
immutable structをメンバとして持った、普通の構造体までも、代入不可能になる点です。

#code(d){{{
immutable struct ID
{
int value;
}

struct Data
{
ID id; // これが代入不可能になる。
}

void main()
{
Data data = Data(ID(1));
data.id = ID(2); // error
data = Data(ID(3)); // error
}
}}}

この2つのエラーはそれぞれ意味が異なっていると私は考えます。
1つ目のエラーは当然といえば当然なのですが、Data構造体だけ見た場合に変数idがimmutable変数だということが分かりにくいのが問題です。変数idは実際にはimmutableであるため、そのように定義できてしまうのは良くないのではないでしょうか。
2つ目のエラーはより分かりにくいエラーです。変数idがimmutableであるため、Dataを代入することでimmutable変数の不変性を破壊してしまう問題があります。したがって、エラーが出るのは正しいのですが、これは、Dataが代入不可能であり、多くのアルゴリズムやコンテナの要素として使うことができないことを意味します。

これらの問題を考えると、immutable structは非常に使いにくくなってしまいます。
みなさんはimmutable structを利用したことがあるでしょうか?
使うとしたら、どのような場面でしょうか?
ほんとうに必要なのでしょうか?

皆様の忌憚ない意見をお聞かせください。
投票数:30 平均点:6.33
返信する

この投稿に返信する

題名
ゲスト名
投稿本文

  条件検索へ


メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu