Почему \% (\) быстрее, чем \(\) в Vim?

основываясь на ответе vivek_23 и после серфинга в интернете, я нашел решение этой проблемы.

мы не можем добавить дополнительные поля в метод правил, нам нужно добавить их в конструктор.

вот мой окончательный код.

<?php

namespace App\Containers\Package\UI\API\Requests;

use App\Ship\Parents\Requests\Request;
use Auth;

/**
 * Class CreatePackageServiceRequest.
 */
class CreatePackageServiceRequest extends Request
{

    /**
     * The assigned Transporter for this Request
     *
     * @var string
     */
    // protected $transporter = \App\Ship\Transporters\DataTransporter::class;

    /**
     * Define which Roles and/or Permissions has access to this request.
     *
     * @var  array
     */
    protected $access = [
        'permissions' => '',
        'roles'       => '',
    ];

    /**
     * Id's that needs decoding before applying the validation rules.
     *
     * @var  array
     */
    protected $decode = [
        // 'id',
    ];

    /**
     * Defining the URL parameters (e.g, `/user/{id}`) allows applying
     * validation rules on them and allows accessing them like request data.
     *
     * @var  array
     */
    protected $urlParameters = [
        // 'id',
    ];

    public function __construct(\Illuminate\Http\Request $request)
    {
        $request->request->add([
            'user_id' => Auth::user()->id, 
            'vendor_id' => Auth::user()->ownedVendor->id
        ]);
    }

    /**
     * @return  array
     */
    public function rules()
    {
        // $this->merge([
        //     'user_id' => Auth::user()->id, 
        //     'vendor_id' => Auth::user()->ownedVendor->id
        // ]);

        // dd($this->all());

        return [
            'name'                          => 'required|max:255',
            'has_limited_number_of_event'   => 'required',
            'min_length'                    => 'required|numeric',
            'max_length'                    => 'required|numeric|min:'.($this->get('min_length') + 1),
            'max_booking'                   => 'required',
            'message_on_booking_full'       => 'required',
            'allow_choose_host'             => 'required',
            'allow_skip'                    => 'required',
            'host_name'                     => 'required',
            'allow_extra_booking'           => 'required',
            'message_no_host_available'     => 'required',
            'has_photobooth_operator'       => 'required',
            'require_photobooth_background' => 'required',
            'require_customization'         => 'required',
            'customization_title'           => 'required',
            'customization_label'           => 'required',
            'user_id'                       => 'required',
            'vendor_id'                     => 'required',
            // '{user-input}' => 'required|max:255',
        ];
    }

    /**
     * @return  bool
     */
    public function authorize()
    {
        return $this->check([
            'hasAccess',
        ]);
    }
}

спасибо.

5
задан Brian Carper 11 April 2009 в 22:36
поделиться

2 ответа

Комментарий «немного быстрее» точен в том, что нужно сделать чуть меньше бухгалтерии, но акцент делается на «немного», а не «быстрее». Обычно, материал, соответствующий \ (pattern \) , должен быть сохранен, чтобы вы могли использовать \ 3 (для соответствующего номера), чтобы ссылаться на него в замене. Обозначение % означает, что vim не должен следить за совпадением - поэтому он выполняет немного меньше работы.


@SimpleQuestions спрашивает:

Что вы имеется в виду под "следить за матчем"? Как это влияет на скорость?

Вы можете использовать экранированные скобки, чтобы «захватить» части сопоставленного шаблона. Например, предположим, что мы \ 1 и \ 2 в тексте замены относятся к захваченным частям регулярного выражения - имени функции (последовательности буквенно-цифровых символов, начинающихся с буквенного символа - считая подчеркивание как ' alphabetic ') и список аргументов функции (все в скобках, но не в скобках).

Если бы я использовал нотацию \% (.... \) вокруг идентификатора функции тогда \ 1 будет ссылаться на список аргументов, и не будет \ 2 . Поскольку vim не должен был бы отслеживать одну из двух захваченных частей регулярного выражения, у него чуть меньше бухгалтерии, чем если бы он должен был отслеживать две захваченные части. Но, как я уже сказал, разница крошечная; Вы, вероятно, никогда не сможете измерить это на практике. Вот почему в руководстве написано «это позволяет больше групп»; если вам нужно сгруппировать части вашего регулярного выражения, но вам не нужно снова обращаться к ним, тогда вы можете работать с более длинными регулярными выражениями. Однако к тому времени, когда у вас есть более 9 запомненных (захваченных) частей регулярного выражения, ваш мозг, как правило, выполняет вращательные движения, и ваши пальцы все равно будут ошибаться - поэтому усилия обычно не стоят того. Но это, я думаю, аргумент для использования нотации \% (... \) . Он соответствует нотации Perl (PCRE) ' (?: ...) ' для не захватывающего регулярного выражения.

к тому времени, когда у вас есть более 9 запомненных (захваченных) частей регулярного выражения, ваш мозг обычно делает круговые движения, и ваши пальцы все равно будут ошибаться - поэтому усилия обычно не стоят того. Но это, я думаю, аргумент для использования нотации \% (... \) . Он соответствует нотации Perl (PCRE) ' (?: ...) ' для не захватывающего регулярного выражения.

к тому времени, когда у вас есть более 9 запомненных (захваченных) частей регулярного выражения, ваш мозг обычно делает круговые движения, и ваши пальцы все равно будут ошибаться - поэтому усилия обычно не стоят того. Но это, я думаю, аргумент для использования нотации \% (... \) . Он соответствует нотации Perl (PCRE) ' (?: ...) ' для не захватывающего регулярного выражения.

11
ответ дан 18 December 2019 в 12:01
поделиться

Я спросил в #Vim, быстрее ли другой из-за возврата. Пользователь godlygeek ответил:

Нет, это быстрее, потому что сопоставляемая вещь не нуждается в strdup'ed - любая ненужная работа - плохая вещь для файла синтаксиса.

Он продолжение:

[Скорость] зависит от того, насколько велика Строка Для 3 персонажей это не имеет большого значения, для 3000 это вероятно делает. И имейте в виду, что это должно быть strdup'ed каждый раз, когда это спички .... в том числе во время возвращение назад ... что означает, что даже 3 символа могут быть strdup'ed 1000 раз за совпадение один регулярное выражение. - файлы синтаксиса находятся в $ VIMRUNTIME / синтаксис

4
ответ дан 18 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

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