teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

文章の修正

2021/08/06 02:43

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  そもそもアンパックを使わなければ冗長にならないかと思います。
14
14
 
15
- character_dict の場合はわざわざ Dictionary に逃がすのではなく Character のインスタンスを作成すれば良いかと思います。
15
+ character_dict の場合はわざわざ Dictionary に逃がすのではなく直接 Character のインスタンスを作成すれば良いかと思います。
16
16
  ```C#
17
17
  var character = new Character("hogeman", 10, 10, 10, 10);
18
18
  ```

2

コード修正

2021/08/06 02:43

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -22,9 +22,11 @@
22
22
 
23
23
  character_list の場合はそもそもキーがない値のみの状態を持つこと自体がよくありません。
24
24
  これでは name プロパティと hogeman という値をシンプルに紐付けることができないからです。
25
- Character クラスのコンストラクタの引数の位置と character_list の添字で紐付けることはできますが、これをするにはリフレクションを使う必要があり、とても複雑な実装になります。
26
25
 
27
- キーを持たせれば良いだけですから、もしキーを持たせられない背景あるならそれが真の問題だ思います。
26
+ Character クラスのコンストラクタの引数の位置と character_list の添字で紐付ることはきますがそれを行うにはリフレクションを使う必要あり、ても複雑な実装になります。
28
27
 
28
+ わざわざリフレクションを使うぐらいであれば、キーを持たせれば良いだけです。
29
+ もしキーを持たせられない背景があるならそちらを先に解決するべきです。
30
+
29
- character_dict, character_list のような初期化をしない実装がシンプルです。
31
+ よって character_dict, character_list のような初期化をしない実装がシンプルです。
30
32
  もしアンパックを使うこと自体が目的と化していると思われたら、上記のようなアプローチで作り方を考え直したほうが良いかもしれません。

1

文章の修正

2021/08/06 02:42

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > Pythonのようにリストや辞書をアンパックして渡したい
2
2
 
3
- C# アンパックに相当する機能はありません。TN8001 さんの回答のように Tuple を使う方法が辛うじて似ていると思います。
3
+ C# ではアンパックに相当する機能はありません。TN8001 さんの回答のように Tuple を使う方法が辛うじて似ていると思います。
4
4
 
5
5
  ----
6
6
 
@@ -20,7 +20,11 @@
20
20
  仮に character_dict のデータの取得元が JSON や CSV、データベースなのであれば、Dictionary にわざわざ変換するコードを書くのではなく、ライブラリを使いましょう。大体のライブラリは読み込んだコンテンツを直接特定のオブジェクトに変換する機能があります。
21
21
  [Json.NET](https://www.newtonsoft.com/json) とか [CsvHelper](https://joshclose.github.io/CsvHelper/) とか [Entity Framework](https://docs.microsoft.com/ja-jp/ef/) とか。
22
22
 
23
- character_list の場合はそもそもキーがない値のみの状態を持つこと自体がよくありません。キーを持たせれば良いだけですから、もしキーを持たせられない背景があるならそれが真の問題だと思います。
23
+ character_list の場合はそもそもキーがない値のみの状態を持つこと自体がよくありません。
24
+ これでは name プロパティと hogeman という値をシンプルに紐付けることができないからです。
25
+ Character クラスのコンストラクタの引数の位置と character_list の添字で紐付けることはできますが、これをするにはリフレクションを使う必要があり、とても複雑な実装になります。
24
26
 
27
+ キーを持たせれば良いだけですから、もしキーを持たせられない背景があるならそれが真の問題だと思います。
28
+
25
29
  character_dict, character_list のような初期化をしない実装がシンプルです。
26
30
  もしアンパックを使うこと自体が目的と化していると思われたら、上記のようなアプローチで作り方を考え直したほうが良いかもしれません。