7

私は次のような変数を持っています

a = 3

a のいくつかの値について、呼び出したい同じ関数があります。

case a of
     3 -> print "hello"
     4 -> print "hello"
     5 -> print "hello"
     6 -> print "hello something else"

したがって、a=3、a=4、および a=5 に対して、同じ関数呼び出しを行います。これらをより適切にグループ化できますか? 私はちょっとした解決策を探しています:

case a of
     3 || 4 || 5 -> print "hello"
     6           -> print "hello something else"

もちろん、これは機能しませんが、うまくいけば、私が最終的に望む場所にたどり着くことができます。

ありがとう。

4

2 に答える 2

2

コードを改善するためにさまざまなことを行うことができます。まず、すべてのブランチが同じ関数を呼び出す場合、次の理由はありません。

print (case a of 
         3 -> "hello"
         4 -> "hello"
         5 -> "hello"
         6 -> "hello something else")

これにより、コードの一般的な動作がより除外されます。次に、3、4、および 5 のケースを一緒にグループ化することについて質問しているようですが、最善の方法は、分類関数を除外することです。

 let cat 3 = True
     cat 4 = True
     cat 5 = True
     cat 6 = False
 in print (case cat a of True -> "hello"
                         False -> "hello something else")

cat x = xこれを、前のポスター ( elem[3,4,5]など)によって提案された代替手段の 1 つと組み合わせることができます。

于 2013-03-02T12:55:06.780 に答える