Как работает оператор сравнения в F #? - PullRequest
0 голосов
/ 26 ноября 2009

Я занят изучением очень анемичного проекта F #, предоставленного MS в VS 2010 Beta 2, и наткнулся на то, что требует некоторого объяснения:

let rec SumList xs =
    match xs with
    | []    -> 0
    | y::ys -> y + SumList ys

Я предполагаю, что совпадение - это что-то вроде переключения в других языках, когда пустой список приводит к возвращаемому значению 0, но второй случай меня очаровывает. Означает ли это, что «runtime | интерпретатор» оценивает аргумент соответствия как y cons ys или, скорее, как «если аргумент имеет форму y cons ys », повторяется с y и да?

Ответы [ 2 ]

4 голосов
/ 26 ноября 2009

Вы можете найти обсуждение здесь

Объяснение соответствия шаблона с переключателем

полезно. Я думаю, что сложно суммировать, как работает сопоставление с образцом, но это и конструкция потока управления (а-ля switch), и конструкция связывания.

1 голос
/ 26 ноября 2009

Сопоставление с образцом не похоже на оператор switch: switch работает со значением выражения, тогда как match также может работать со структурой выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...