Какой смысл того, чтобы иметь указатели в Движении?

Другое забавное дополнение в 1.9 функциональностях Proc является Proc#curry, который позволяет Вам поворачивать Proc, принимающий n аргументы в одно принятие n-1. Здесь это объединено с Proc# === подсказка, которую я упомянул выше:

it_is_day_of_week = lambda{ |day_of_week, date| date.wday == day_of_week }
it_is_saturday = it_is_day_of_week.curry[6]
it_is_sunday = it_is_day_of_week.curry[0]

case Time.now
when it_is_saturday
  puts "Saturday!"
when it_is_sunday
  puts "Sunday!"
else
  puts "Not the weekend"
end
85
задан hannson 19 March 2010 в 16:14
поделиться

2 ответа

Ссылки нельзя переназначить, в то время как указатели можно. Уже одно это делает указатели полезными во многих ситуациях, когда ссылки использовать нельзя.

31
ответ дан 24 November 2019 в 08:22
поделиться

Go разработан как лаконичный, минималистский язык. Поэтому он начался только с значений и указателей. Позже, по необходимости, были добавлены некоторые ссылочные типы (срезы, карты и каналы).


Язык программирования Go: FAQ по языковому дизайну: почему карты, срезы и каналы являются ссылками, тогда как массивы являются значениями?

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


golang-nut: иди, язык. Некоторые отзывы и сомнения.

"Добавление const к системе типов заставляет его появляться повсюду, и Одной из жертв, по-видимому, является возможность отмечать переменные (за исключением базовых констант времени компиляции) и параметры как неизменяемые. Его просили, но отказали.


golang-nut: иди, язык. Некоторые отзывы и сомнения.

"Добавление const к системе типов заставляет его появляться повсюду, и заставляет убирать его везде, если что-то изменится. Пока там может быть полезно пометить объекты как неизменяемые, мы не думаю, что квалификатор типа const - лучший способ ".

27
ответ дан 24 November 2019 в 08:22
поделиться
Другие вопросы по тегам:

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