Как я высказываюсь “=>”, как используется в лямбда-выражениях в .NET

159
задан Cerbrus 15 February 2018 в 10:20
поделиться

12 ответов

Я обычно говорю 'таким образом что' при чтении того оператора.

В Вашем примере, p => p. Возраст> 16 чтений как "P, такой, что p. Возраст больше, чем 16".

На самом деле, я задал этот самый вопрос на официальных linq предрелизных форумах, и Anders Hejlsberg ответил путем высказывания

, я обычно читал => оператор, как "становится" или "для который". Например,
Func f = x => x * 2;
Func тестируют = c => c. Город == "Лондон";
чтения как "x становится x * 2" и "c для который c. Город равняется Лондону"

, Насколько 'переходит в' - это никогда не имело смысла мне. 'p' не идет никуда.

В случае чтения кода кому-то, скажем, по телефону, затем, пока они - такой же программист C#, я просто использовал бы слово 'лямбда' - то есть, "p лямбда p отмечает точкой больше возраст - чем шестнадцать".

В комментариях Steve Jessop упомянул 'карты' в случае преобразований - пример настолько берущего Anders:

x => x * 2;

читал бы

, x отображается на x времена 2.

, Который действительно кажется намного ближе к фактическому намерению кода, чем, 'становится' для этого случая.

148
ответ дан Erik Forbes 23 November 2019 в 21:37
поделиться

Часть проблемы - то, что можно считать ее вслух по-другому в зависимости от того, как она структурирована. Это - позор, это настолько довольно или столь же не интегрируется как рубин |.

1
ответ дан Tad Donaghe 23 November 2019 в 21:37
поделиться

Кроме получения предыдущего объема (все переменные и константы, которые находятся в объеме для нормали кода в точке, где лямбда-выражение происходит, доступны коду выражения), лямбда-выражение является чрезвычайно синтаксическим сахаром для подставляемой функции.

список значений налево от производственного оператора (" =>") вносит структуру, и содержание стекового фрейма раньше выполняло вызов к этой функции. Вы могли сказать, что список значений вносит и объявления параметра и аргументы, которые передаются; в более стандартном коде они определяют структуру, и содержание стекового фрейма раньше выполняло вызов к функции.

В результате значения "переходят к" коду выражения. Вы сказали бы, "определяет стековый фрейм для", или "переходит в"?:)

В исключительно определенном приложении булевых выражений, используемых в качестве условий фильтра (доминирующее использование лямбда-выражений, которые экстенсивно рассматривают другие ответы на этот вопрос), очень разумно пропустить метод в пользу намерения кода, и это приводит к "для который", будучи столь же сжатым и говоря больше о значении кода.

Однако лямбда-выражения не являются единственной провинцией Linq, и за пределами этого контекста более общая форма "переходит в", должен использоваться.

<час>

, Но почему "переходит в"?

, поскольку "заполняет стековый фрейм следующего кода", является слишком длинным, чтобы продолжать говорить это. Я предполагаю, что Вы могли сказать, "передается".

А решающее различие между явно переданными параметрами и полученными переменными (если я помню правильно - исправляют меня, если я неправ) - то, что первый передается ссылкой и последним значением.

2
ответ дан Peter Wone 23 November 2019 в 21:37
поделиться

Я не думал он об очень, но я просто succintly говорю. Это коротко и кратко, и подразумевает, что переменная передается выражение. Я предполагаю, что это могло быть перепутано с цифрой 2 ("два"), но я склонен высказываться "для" больше симпатии "ta" при разговоре. Никто (кто знает лямбды, по крайней мере) никогда не говорил мне, что они думали он неоднозначный...

// "Func f equals x to x times two"
Func f = x=> x * 2;

// "Func test equals c to c dot City equals London"
Func test = c => c.City == "London"
2
ответ дан Mark Brackett 23 November 2019 в 21:37
поделиться

Я использую, "переходит в", потому что книга LINQ сказала мне:)

7
ответ дан CodeChef 23 November 2019 в 21:37
поделиться

Мой короткий ответ: "c 'лямбда -' e". Хотя я цепляюсь "за 'лямбду' c 'функция' e", я думаю, что лямбда - является вселенским компромиссом. Анализ следует.

Это - большой вопрос если только для причудливых ответов. Большинство переводов имеет другие значения, чем для лямбда-выражений, ведя к экзотическим интерпретациям. Как старый хакер лямбда-выражения, я просто игнорирую нотацию.NET и переписываю ее как лямбду в моей голове при жалел, что они не сделали почти ничто больше для этого.

<час>

Для повествования кода по телефону, Вы хотите, чтобы кто-то был в состоянии записать код в последовательности. Это - проблема, конечно, но стрелка лямбды или что-то являются, вероятно, лучшими, можно добраться, или возможно лямбда - в, но лямбда - является самой точной.

проблемой является инфиксное использование и как назвать все это и роль левых и правых частей с чем-то, что работает, когда говорится в инфиксном месте.

Это может быть сверхограниченной проблемой!

<час>

я не использовал бы "таким образом, что", потому что это подразумевает, что правая сторона является предикатом, который должна удовлетворить левая сторона. Это очень отличается от разговора о правой стороне, с которой левая сторона была абстрагирована как функциональный параметр. (Оператор MSDN обо "Всех лямбда-выражениях" является просто оскорбительным, а также неточным.)

Что-то терзается о, "переходит в", хотя это может быть настолько близко, как мы можем добраться. "Переходит в", подразумевает преобразование, но нет точно некоторой переменной c, который переходит к выражению в c. Абстракция к функции немного неуловима. Я мог привыкнуть к этому, но я все еще тоскую по чему-то, что подчеркивает абстракцию переменной.

, Так как левая сторона всегда является простым идентификатором в случаях, используемых до сих пор [но ожидайте расширений, которые могут перепутать это позже], я думаю для "c => выражение", я считал бы "c 'функциональное лямбдой' выражение"' или даже "c выражение 'функции' 'аргумента'". В последнем случае я мог тогда сказать вещи как "b 'аргумент' c выражение 'функции' 'аргумента'".

могло бы быть лучше сделать его еще более ясным, что лямбда-выражение представляется, и скажите что-то как "'аргумент' b 'аргумент' c 'функциональное' выражение".

Выяснение, как перевести все это в другие языки, является осуществлением для студента [; <).

я все еще волнуюсь о" (b, c) => выражение" и другие варианты, которые могут возникнуть, если они уже не имеют. Возможно, "'args' b, c 'функциональное' выражение".

<час>

После всего этого размышления, я замечаю, что возвращаюсь к переводу "c => e" как "'лямбда' c 'функция' e" и замечающий, что отображение на точную форму должно быть понято под контекстом: О» c (e), c => e, f , где f (c) = e, и т.д.

я ожидаю, что" переходит - к "объяснению, будет преобладать просто, потому что это - то, куда доминирующее большинство собирается видеть лямбда-выражения впервые. Это - жалость. Хороший компромисс мог бы быть" c ' лямбда - [1 114]' e "

2
ответ дан orcmid 23 November 2019 в 21:37
поделиться

Я видел, что люди говорят, "Стрелка".

7
ответ дан Brian 23 November 2019 в 21:37
поделиться

Я всегда называл его "wang оператор":-)

"p wang возраст p, больше, чем 16"

15
ответ дан Aidos 23 November 2019 в 21:37
поделиться

Код Чтения По Телефону

От Eric Lippert:

я лично сказал бы, что c => c+1 как "видят, идет для наблюдения плюс один". Некоторые изменения, которые я услышал:

Для проекции, (Клиент c) => c. Имя: "клиент видит, становится, посмотрите точечное имя"

Для предиката, (Клиент c) => c. Возраст> 21: "клиент видит таким образом, которые видят, что точечный возраст больше, чем двадцать один"

18
ответ дан Gulzar Nazim 23 November 2019 в 21:37
поделиться

От MSDN:

Все лямбда-выражения используют оператор лямбды =>, который читается, поскольку "переходит в".

56
ответ дан Tim Cooper 23 November 2019 в 21:37
поделиться

Как насчет «карт к»? Это как сжатыми, так и, возможно, более технически точными (т. Е. Нет предположения о состоянии состояния, как с «идет« или «становится», не измеряется слиянием набора с его характерной функцией, как с «такими, как» или «для которого») другие альтернативы. Хотя, если есть уже стандарт, поскольку страница MSDN, кажется, подразумевается, может быть, вы должны просто пойти с этим (хотя бы для C # код).

5
ответ дан 23 November 2019 в 21:37
поделиться

"Карты до" - мое любимое произношение. Говоря математически, функция "сопоставляет" свои аргументы с возвращаемым значением (можно даже назвать функцию "mapping"), поэтому мне имеет смысл использовать эту терминологию в программировании, тем более, что функциональное программирование (особенно лямбда-вычисление) очень близко к математике. Кроме того, она более нейтральна, чем "становится", "идет к" и т.д., поскольку не предполагает изменения состояния, как уже упоминалось, без контекста.

3
ответ дан 23 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: