7

タプルを返す Scala のメソッドがあります。そのメソッドが「test」と呼ばれているとしましょう。それならやりたい

val (X,Y) = test()

ただし、変数名が小文字の場合、つまり次のように、パターン マッチングは Scala でのみ機能します。

val(_X,_Y) = test(); val X = _X; val Y = _Y

...問題なく動作しますが、醜く、簡潔ではありません。X と Y は行列なので、小文字の変数を使用する必要はありません。(たとえば、scipy と matlab では、このような制限はありません)。

小文字の変数が大文字の変数のように振る舞うようにする方法、つまり `x` を実行する方法があると思います。おそらく、大文字の変数を小文字の変数のように振る舞わせる方法はあるのでしょうか? それが私の質問です。Scala で大文字の変数に直接パターン マッチングする方法はありますか?

4

2 に答える 2

5

簡単な答えは、しないことです。

構文規則により、コードが読みやすくなり、他の人が理解できるようになります。Scala の規則では、変数は小文字で始まり、定数とクラスは大文字で始まります。これに違反すると、パターン マッチングの問題などの問題が発生するだけでなく、コードが読みにくくなります。(私を信じてください。そのような慣習を気にしない他の誰かによって書かれたコードを読まなければならないことがあれば、あなたはその人を呪うことになるでしょう。)

変数が行列であることを強調したい場合は、xMatrixandyMatrixまたはそのようなものを使用することをお勧めします。これにより、それらが変数であり、行列を表していることが明らかになります。

または、プロジェクトに固有の規則を作成して、すべての行列変数が "M" で終わるようxMにしyMます。

コードが読みやすくなる場合は、さらに数文字入力する価値があります。

于 2012-09-28T11:47:02.537 に答える
1

これを行う方法はありません。行列であることを示す変数の型が既にあるので、変数名を大文字にする必要はありません。

于 2012-09-28T09:20:26.027 に答える