3

天気を含むリストがあるとします。

1> Weather = [{toronto, rain}, {montreal, storms}, {london, fog}, 
    {paris, sun}, {boston, fog}, {vancouver, snow}].

霧の場所を取得するには、次のようにします。

2> FoggyPlaces = [X || {X, fog} <- Weather].
[london,boston]

今度は、霧と雪の両方がある場所を取得したいと思います。これを試してみましたが、雪の降る場所しか検索できません。

3> FoggyAndSnowyPlaces = [X || {X, fog} <- Weather, {X,snow} <- Weather].
[vancouver,vancouver]

私が期待していたところ[london,boston,vancouver]

複数のフィルターを含めるにはどうすればよいですか?

4

1 に答える 1

13
FoggyAndSnowyPlaces = [X || {X, Y} <- Weather, (Y == fog) or (Y == snow)].

ジェネレーターPattern <- List)とフィルター(ブール条件)を混同しています。複数のジェネレーターは他の言語のネストされたループのように機能します。最初のジェネレーターは2つの値を生成するため、2回3>取得します。vancouver

于 2013-01-14T15:37:55.597 に答える