0

また助けが必要です。パターンマッチング内でlists:seq(from、to)を使用できるかどうか疑問に思いましたか?以下は私が達成しようとしているコードです

product_selling_price_evaluate(lists:seq(1100,1190),standard_produce,Costprice) -> Costprice*10;
product_selling_price_evaluate(lists:seq(1200,1300),standard_produce,Costprice) -> Costprice*20;
product_selling_price_evaluate(lists:seq(1400,1500),standard_produce,Costprice) -> Costprice*30;
product_selling_price_evaluate(lists:seq(1600,1700),standard_produce,Costprice) -> 40*Costprice.

コードをコンパイルすると、不正なパターンエラーが発生します。

入力例は次のようになります

selling_price:product_selling_price_evaluate(1100,standard_produce,10).

そして私はそれが一致として最初のものを見つけて、出力を次のように与えることを望みます

100

lists:seqはcaseで機能しますか?

もっと簡単に説明しましょう。私は以下のケースがあります

1100 to 1190   = Apples
1200 to 1300   = Oranges
1400 to 1500   = Bananas
1600 to 1700   = Berries

入力を1125とすると、出力はAppleになります。ここでも、入力を1450とすると、出力をバナナにします。私はあなたたちが理解したことを願っています、私は何を達成しようとしています!

4

3 に答える 3

3

私があなたが達成しようとしていることを正しく解釈するならば、あなたがおそらく探しているのは警備員です。

このようなもの(テストされていない):

product_selling_price_evaluate(N,standard_produce,Costprice) when N >= 10 andalso N <= 20 -> Costprice*10; 
product_selling_price_evaluate(N,standard_produce,Costprice) when N >= 21 andalso N <= 30 -> Costprice*20;
[...]
于 2013-03-08T20:13:46.447 に答える
1

目的の入力を指定していない場合、関数は最初の引数としてリスト([11001,1101、1102、...、1189,1190])を期待していますが、数値、つまり1100を指定しています。

于 2013-03-08T20:01:36.983 に答える
0

ガードはコンマで区切ることができます(、)。これは。と同じ意味andalsoです。

product_selling_price_evaluate(N,standard_produce,Costprice)
    when 10 =< N, N =< 20 -> Costprice*10; 
product_selling_price_evaluate(N,standard_produce,Costprice)
    when 21 =< N, N =< 30 -> Costprice*20;
...

<=ここでは違法です=<。代わりに使用してください。

于 2013-03-09T14:05:42.580 に答える