Методы установки Ruby: является ли символ равенства (=) соглашением или функциональностью?

В качестве примера взят этот класс:

class House
  def initialize(color, size)
    @color = color
    @size = size
  end

  def color
    @color
  end
  # Is the = part of the syntax or a convention?
  def color=(color)
    @color = color
  end
end

Является ли равенство '=' в конце метода установки соглашением, например '!' или '?'? Или это добавляет функциональность?

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
2
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это «всего лишь» соглашение, подобное тому, как завершающие методы возвращают логическое значение с помощью ? или добавляют !, когда существует менее опасный аналогичный метод.

Вы можете определить метод установки с помощью (стиля Java)

def set_color(color)
  @color = color
end

или даже используя Unicode

def 🎨(color)
  @color = color
end

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

Кстати, в этом примере вы также можете использовать

attr_writer :color

См. attr_writer , attr_reader и attr_accessor.

Одно незначительное отличие состоит в том, что выражения присваивания возвращают присвоенное значение независимо от возвращаемого значения метода присваивания, что позволяет выполнять цепочки присвоений.

Stefan 10.07.2024 10:00

... и в случае вызова метода, независимо от того, происходит ли присвоение на самом деле.

engineersmnky 10.07.2024 15:13

Другие вопросы по теме