Как правильно поместить этот фрагмент кода в Ruby? - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно знать, как правильно набрать это: environment: :sandbox или environment::sandbox?

Изменить: я видел ваши комментарии, возможно, если я введу код, который использовал, я получу лучше ответ?

require_relative 'lib/gocardless_pro'

    @client = GoCardlessPro::Client.new(
        access_token: ENV['GOCARDLESS_TOKEN'],
        # environment: :sandbox or environment::sandbox?
    )

Ответы [ 3 ]

1 голос
/ 18 июня 2020

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

Первый - альтернативный способ написания оператора отправки сообщения .

Второй может означать:

  • В Hash литерал : пара ключ-значение с ключом :environment и значением :sandbox .
  • В списке параметров : необязательный параметр ключевого слова environment с аргументом по умолчанию :sandbox.
  • В списке аргументов : аргумент ключевого слова environment со значением :sandbox или
    • в самом конце списка аргументов : пара ключ-значение с ключом :environment и значением :sandbox, которая является частью значения Hash, привязанного к последнему позиционному аргументу .

Однако, поскольку на самом деле в вашем коде нет ни литерала Hash, ни списка параметров, ни списка аргументов, это просто SyntaxError.

1 голос
/ 18 июня 2020

Скорее всего, это environment: :sandbox, где вы определяете ключ ha sh environment для хранения значения :sandbox, которое представляет собой строку .

Вероятно, ваше замешательство связано с тем, что Module::Class является допустимым синтаксисом, но ваш пример в нижнем регистре не является допустимым синтаксисом, и я предполагаю из контекста вашего вопроса, что вы не пытаетесь использовать разделитель пространства имен .

0 голосов
/ 19 июня 2020
    @client = GoCardlessPro::Client.new(
        access_token: ENV['GOCARDLESS_TOKEN'],
        # environment: :sandbox or environment::sandbox?
    )

В этом контексте вы передаете аргументы ключевого слова методу. Это, по сути, Ha sh, где ключ - Symbol , а значение - все, что вам нравится. Таким образом, это будет environment: :sandbox.

    @client = GoCardlessPro::Client.new(
        access_token: ENV['GOCARDLESS_TOKEN'],
        environment: :sandbox
    )

Это передает аргумент :environment со значением :sandbox.

:access_token, :environment и :sandbox являются Символы, своего рода строки только для чтения, которые также используют меньше памяти.

environment: :sandbox - это сокращение для более обычного синтаксиса :key => :value. Вы можете заменить :key => просто key:.

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