Почему я должен использовать ключевое слово “финал” на параметре метода в Java?

к какому параметру name относится

blockquote>

Name - это псевдоним, который вы даете переменной $name, к которой вы можете обратиться в своем представлении.

Например,

$name= 'John Doe';
return view('pages.about')->with('myName', $name);

Так что теперь вы можете получить доступ к $myName в представлении about

Из документов написано:

Как альтернатива для передачи полного массива данных в вспомогательную функцию представления вы можете использовать метод with для добавления отдельных фрагментов данных в представление

blockquote>

Ссылка: Документы

ОБНОВЛЕНИЕ ПОСЛЕ КОММЕНТАРИЙ: В вашем случае вы должны использовать, как показано ниже:

return view ('pages.absensi')->with('Rfidabs' => $Rfidabs);

, тогда в вашем abseni представлении вы можете пройти через массив, как показано ниже:

foreach ($Rfidabs as $item)
      
        {{$item->id}} 
        {{$item->Name}} 
        {{$item->Kelas}}
      
endforeach
366
задан Basil Bourque 5 September 2013 в 11:14
поделиться

7 ответов

Иногда хорошо быть явным (для удобочитаемости), который не изменяет переменная. Вот простой пример, где использование final может сохранить некоторые возможные головные боли:

public void setTest(String test) {
    test = test;
}

, Если Вы забываете 'это' ключевое слово относительно метода set, затем переменная, Вы хотите установить, не становится установленным. Однако, если бы Вы использовали final ключевое слово на параметре, то затем ошибка была бы поймана во время компиляции.

228
ответ дан 0xCursor 23 November 2019 в 00:08
поделиться

Позвольте мне объяснить немного об одном случае, где Вы имеете для использования финала, который уже упомянул Jon:

, Если Вы создаете анонимный внутренний класс в своем методе и используете локальную переменную (такую как параметр метода) в том классе, затем компилятор вынуждает Вас сделать финал параметра:

public Iterator<Integer> createIntegerIterator(final int from, final int to)
{
    return new Iterator<Integer>(){
        int index = from;
        public Integer next()
        {
            return index++;
        }
        public boolean hasNext()
        {
            return index <= to;
        }
        // remove method omitted
    };
}

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

причина того требования - это: Локальные переменные живут на стеке, поэтому они существуют только, в то время как метод выполняется. Однако экземпляр анонимного класса возвращается из метода, таким образом, он может жить для намного дольше. Вы не можете сохранить стек, потому что он необходим для вызовов последующих методов.

Поэтому то, что Java делает вместо этого, должно поместить копии из тех локальных переменных как скрытые переменные экземпляра в анонимный класс (Вы видите их при исследовании кода байта). Но если бы они не были окончательными, то можно было бы ожидать анонимный класс и метод, видя изменения, которые другой вносит в переменную. Для поддержания иллюзии, что существует только одна переменная, а не две копии, это должно быть окончательным.

76
ответ дан Michael Borgwardt 23 November 2019 в 00:08
поделиться

Да, исключая анонимные классы удобочитаемость и поглощенное объявление это почти бесполезно. Действительно ли те три вещи бесполезны хотя?

Лично я склонен не использовать final для локальных переменных и параметров, если я не использую переменную в анонимном внутреннем классе, но я могу, конечно, видеть точку тех, кто хочет прояснить, что само значение параметра не изменится (даже если объект это отошлет к изменениям свое содержание). Для тех, кто находит, это добавляет к удобочитаемости, я думаю, что это - совершенно разумная вещь сделать.

Ваша точка была бы более важной, если бы кто-либо на самом деле утверждал, что она сделала , сохраняют данные постоянными способом, что она не делает - но я не могу помнить видеть любые такие требования. Вы предполагаете, что существует значительное тело разработчиков, предполагающих, что final имеет больше эффекта, чем это действительно делает?

РЕДАКТИРОВАНИЕ: Я должен был действительно подвести итог всего этого со ссылкой Монти Пайтона; вопрос кажется несколько подобным выяснению, "Что римляне когда-либо делали для нас?"

126
ответ дан Jon Skeet 23 November 2019 в 00:08
поделиться

Я использую финал все время на параметрах.

это добавляет так много? Едва ли.

я выключил бы его? Нет.

причина: Я нашел 3 ошибки, где люди написали неаккуратный код и не удались установить членскую переменную в средствах доступа. Все ошибки оказались трудными найти.

я хотел бы видеть, что это сделало значение по умолчанию в будущей версии Java. Передача вещью значения/ссылки сбивает с толку очень много младших программистов.

Еще одна вещь.. мои методы имеют тенденцию иметь небольшое число параметров, таким образом, дополнительный текст на объявлении метода не является проблемой.

25
ответ дан Fortyrunner 23 November 2019 в 00:08
поделиться

Используя финал в параметре метода не имеет никакого отношения к тому, что происходит с аргументом на стороне вызывающего абонента. Это только предназначено для маркировки его как не изменяющийся в том методе. Поскольку я пытаюсь принять стиль более функционального программирования, я отчасти вижу значение в этом.

18
ответ дан Germán 23 November 2019 в 00:08
поделиться

Лично я не использую финал на параметрах метода, потому что он добавляет слишком много помехи к спискам параметров. Я предпочитаю осуществлять тот метод, параметры не изменяются через что-то как Checkstyle.

Для локальных переменных я использую финал, когда это возможно, я даже позволяю Eclipse сделать это автоматически в моей установке для персональных проектов.

я, конечно, хотел бы что-то более сильное как константа C/C++

8
ответ дан starblue 23 November 2019 в 00:08
поделиться

Одна дополнительная причина добавить финал к объявлениям параметра состоит в том, что он помогает определить переменные, которые должны быть переименованы как часть "рефакторинга" Метода Извлечения. Я нашел, что добавление финала к каждому параметру до запуска большого метода, осуществляющего рефакторинг быстро, говорит мне, если существуют какие-либо проблемы, которые я должен решить перед продолжением.

Однако я обычно удаляю их как лишних в конце рефакторинга.

0
ответ дан Michael Rutherfurd 23 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

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