Centos LAMP php страницы ошибка, если без расширения .php

Проблема с правильными правилами синтаксиса Ruby заключается в том, что иногда он сбивается с толку о том, кому принадлежит блок. Из-за двусмысленности оба p и gsub могут «владеть» этим блоком. Метод do присваивается p, а подход { ... } привязан к gsub.

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

Там, где есть двусмысленность, лучше избегать в зависимости от того, как оно интерпретируется, а вместо этого более конкретно:

rv = "rubyisacoollanguage".gsub(/(ruby)(is)(a)(cool)(language)/) do
  "two" + $1.capitalize + " %s %s %s %s!" % [$2,$3,$4.upcase,$5]
end

p rv

Здесь rv = не может взять блок, чтобы он не смог захватить его непреднамеренно.

Вы также можете сделать это:

p(
  "rubyisacoollanguage".gsub(/(ruby)(is)(a)(cool)(language)/) do
    "two" + $1.capitalize + " %s %s %s %s!" % [$2,$3,$4.upcase,$5]
  end
)

Где вы делаете это совершенно ясно, кто что делает.

0
задан Manuel Santi 18 January 2019 в 21:52
поделиться