Что значит => в Аде? - PullRequest
       68

Что значит => в Аде?

1 голос
/ 09 марта 2019

Я понимаю, когда и как использовать => в Аде, особенно при использовании ключевого слова «другие», но я не уверен ни в его собственном имени, ни в том, как и почему он был создан.История и развитие Ады мне очень интересны, и я был бы признателен, если бы кто-нибудь понял это.

Ответы [ 3 ]

2 голосов
/ 09 марта 2019

Переполнение стека на самом деле не место для такого рода вопросов, поэтому он получил по крайней мере один закрытый голос.

Тем не менее, «стрелка» присутствует в языке с момента его первой версии; см. ARM83 2,2 . См. Также Обоснование Ады 83 ; раздел 3.5 кажется первым местом, где он фактически используется, но не по имени.

2 голосов
/ 09 марта 2019

=> называется стрелкой.Он используется с любой формой параметра, а не только с параметром 'others'.

Раздел 6.4 Справочного руководства Ada гласит:

parameter_association :: = [formal_parameter_selector_name =>] явный_актуальный_параметр

явный_актуальный_параметр :: = выражение |имя_переменной

Ассоциация параметров именуется или позиционируется в зависимости от того, указано или нет имя_формального_параметра_выборщика.Любые позиционные ассоциации должны предшествовать любым именованным ассоциациям.Именованные ассоциации не допускаются, если префикс в вызове подпрограммы является attribute_reference.

Аналогично, агрегаты массива описаны в разделе 4.3.3

array_aggregate :: = positional_array_aggregate|named_array_aggregate

positional_array_aggregate :: = (выражение, выражение {, выражение}) |(выражение {, выражение}, другие => выражение) |(выражение {, выражение}, другие => <>)

named_array_aggregate :: = (array_component_association {, array_component_association})

array_component_association :: = discrete_choice_list => выражение |discrete_choice_list => <>

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

0 голосов
/ 10 марта 2019

В качестве дополнения к ответу Джима, на стороне использования / интуитивности: стрелка X => A означает в различных местах синтаксиса Ada: значение A идет на место X. Это очень практично, например, заполнить массив с произвольным порядком ячеек. Смотрите слайд 8 из этой презентации для приложения с большими массивами. Само собой разумеется, что отсутствие обозначения стрелки привело бы к куче ошибок в таком случае. Иногда это просто полезно, чтобы сделать ассоциации более читабельными. Вы можете увидеть это здесь в действии для разработки игрового уровня.

...