複数のクラスを一緒にハッシュキーとして使用する

user923

3Dモデルを計算し、同一の頂点を組み合わせるスクリプトを見つけました。これには次のロジックがあります。私の理解によれば、頂点は頂点クラスのハッシュマップです。

unless vertices.key?(vertex)
  new_vertices << vertex
  vertices[ vertex ] = @vertex_index
  @vertex_index += 1
end

vertex一意のが見つかった場合は、それをnew_vertices配列に追加します。

ハッシュマップのキーが頂点とマテリアルの組み合わせになるようにこれを変更したいと思います(どちらも、このスクリプトが実行されるソフトウェアであるSketchupのクラスです)。各キーが1つではなく2つのクラスの組み合わせになるようにこれを行うための最良の方法は何ですか?頂点とマテリアルの両方を保持しているある種の複製またはクラス?それはハッシュマップでサポートされていますか?

アレクセイマティウシュキン

Rubyでは、ハッシュキーとして何でも使用できます。

hash = {
  42 => "an integer",
  [42, "forty two"] => "an array",
  Class => "a class"
}
#⇒  {42=>"an integer", [42, "forty two"]=>"an array", Class=>"a class"}

hash[[42, "forty two"]]
#⇒ "an array"

そうは言っても、あなたの場合、配列[vertex, material]をキーとして使用するかもしれません

unless vertices.key?([vertex, material])
  new_vertices_and_materials << [vertex, material]
  vertices[[vertex, material]] = @vertex_index
  @vertex_index += 1
end

よりルビーなアプローチはEnumerable#uniq、入力を呼び出して次のことを行うことです。

input = [ # example input data
  [:vertex1, :material1],
  [:vertex2, :material1],
  [:vertex2, :material1],
  [:vertex2, :material2],
  [:vertex2, :material2]
]
new_vertices_and_materials = input.uniq
vertices_and_materials_with_index =
  new_vertices_and_materials.
    zip(1..new_vertices_and_materials.size).
    to_h
#⇒ {[:vertex1, :material1]=>1,
#   [:vertex2, :material1]=>2,
#   [:vertex2, :material2]=>3}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Perlハッシュのキーとして複数の値を使用する

分類Dev

クラス定数をRubyハッシュキーとして使用する

分類Dev

JavaScript:複数のクラスを単一の変数としてキャッシュする

分類Dev

ループを介して複数のテキストビューを動的に追加しようとすると、アプリがクラッシュします。単一のテキストビューを追加する場合は正常に機能します

分類Dev

スラッシュで区切られたキーを使用してハッシュにアクセスする

分類Dev

複数のAPIバージョンを一緒に使用してクラスを定義する

分類Dev

テキストビューで複数のシークバー値を一緒に追加する

分類Dev

引数rubyをハッシュキーとして使用する

分類Dev

キーごとに複数の値がある場合に、ハッシュにアクセスして最小値にマップする方法は?

分類Dev

Rubyハッシュのキーとして定数を使用する

分類Dev

複数のスラッシュを使用してドキュメントをCouchDBURLに保存する

分類Dev

ハッシュサブパーティションの一部として、キーに複数の列をどのように指定しますか?

分類Dev

Rubyで変数を使用して記号ハッシュキーにアクセスする方法

分類Dev

変数を使用してハッシュにアクセスするレール

分類Dev

レールを使用して同一のハッシュタグにリンクするハッシュタグ

分類Dev

Ruby-ユーザー入力と正規表現を使用してハッシュキーを検索し、複数の一致を返します

分類Dev

Perl:複数のハッシュに沿ってハッシュキーを比較する

分類Dev

foreachを使用するときにハッシュのハッシュ内のハッシュパラメータにアクセスするための構文

分類Dev

複数のフラッシュアニメーションをAndroidAPKとしてエクスポートする

分類Dev

javascriptを使用してマウスクリックで複数のキーを押すことをシミュレートする方法はありますか?

分類Dev

ブランチごとに1つのコマンドを使用して、プロキシが異なる複数のリモートにプッシュする

分類Dev

MLFlowとHydraを一緒に使用するとクラッシュする

分類Dev

凡例のテキストでmatplotlib散布マーカーをラテックスと一緒に使用する

分類Dev

マングースを使用して複数のクエリを一緒に検索する方法は?

分類Dev

クラスがハッシュマップのキーとして使用されていない場合、ハッシュコードをオーバーライドする実用的なポイントはありますか?

分類Dev

複数のビューに対して単一の投稿アクション メソッドを使用する

分類Dev

複数のタスクでハッシュセットを(一度に)編集することはスレッドセーフですか?

分類Dev

配列のインデックス0サブインデックスをデータテーブルのハッシュのキーとして使用する

分類Dev

小さなSSDを大きなハードディスクのキャッシュとして使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    Perlハッシュのキーとして複数の値を使用する

  2. 2

    クラス定数をRubyハッシュキーとして使用する

  3. 3

    JavaScript:複数のクラスを単一の変数としてキャッシュする

  4. 4

    ループを介して複数のテキストビューを動的に追加しようとすると、アプリがクラッシュします。単一のテキストビューを追加する場合は正常に機能します

  5. 5

    スラッシュで区切られたキーを使用してハッシュにアクセスする

  6. 6

    複数のAPIバージョンを一緒に使用してクラスを定義する

  7. 7

    テキストビューで複数のシークバー値を一緒に追加する

  8. 8

    引数rubyをハッシュキーとして使用する

  9. 9

    キーごとに複数の値がある場合に、ハッシュにアクセスして最小値にマップする方法は?

  10. 10

    Rubyハッシュのキーとして定数を使用する

  11. 11

    複数のスラッシュを使用してドキュメントをCouchDBURLに保存する

  12. 12

    ハッシュサブパーティションの一部として、キーに複数の列をどのように指定しますか?

  13. 13

    Rubyで変数を使用して記号ハッシュキーにアクセスする方法

  14. 14

    変数を使用してハッシュにアクセスするレール

  15. 15

    レールを使用して同一のハッシュタグにリンクするハッシュタグ

  16. 16

    Ruby-ユーザー入力と正規表現を使用してハッシュキーを検索し、複数の一致を返します

  17. 17

    Perl:複数のハッシュに沿ってハッシュキーを比較する

  18. 18

    foreachを使用するときにハッシュのハッシュ内のハッシュパラメータにアクセスするための構文

  19. 19

    複数のフラッシュアニメーションをAndroidAPKとしてエクスポートする

  20. 20

    javascriptを使用してマウスクリックで複数のキーを押すことをシミュレートする方法はありますか?

  21. 21

    ブランチごとに1つのコマンドを使用して、プロキシが異なる複数のリモートにプッシュする

  22. 22

    MLFlowとHydraを一緒に使用するとクラッシュする

  23. 23

    凡例のテキストでmatplotlib散布マーカーをラテックスと一緒に使用する

  24. 24

    マングースを使用して複数のクエリを一緒に検索する方法は?

  25. 25

    クラスがハッシュマップのキーとして使用されていない場合、ハッシュコードをオーバーライドする実用的なポイントはありますか?

  26. 26

    複数のビューに対して単一の投稿アクション メソッドを使用する

  27. 27

    複数のタスクでハッシュセットを(一度に)編集することはスレッドセーフですか?

  28. 28

    配列のインデックス0サブインデックスをデータテーブルのハッシュのキーとして使用する

  29. 29

    小さなSSDを大きなハードディスクのキャッシュとして使用するにはどうすればよいですか?

ホットタグ

アーカイブ