Не понял, где использовать функцию Void и функцию типа Return - PullRequest
0 голосов
/ 29 сентября 2019

Я действительно новичок в программировании и, изучая функцию Дарт, я прихожу к программе, в которой есть, но я не могу понять, что заставляет их использовать разные функции, одну с возвращаемым значением, а другую - без.Оба будут вызваны во время основной программы, и обе подпрограммы завершат задачу, не возвращая никакого значения (по крайней мере, я не видел ничего подобного). Может кто-нибудь указать, почему нужно использовать функцию возвращаемого типа.

import (....)

void main() => runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {

//Void Fuction
  void player(int songNumber) {
    final player = AudioCache();
    player.play('note$songNumber.wav');
  }

//Function with return
  Expanded buildKey({colors, songNumber}) {
    return Expanded(
      child: FlatButton(
        color: colors,
        onPressed: () {
          player(songNumber);
        },
      ),
    );
  }

//Call in main function
buildKey(colors: Colors.red, songNumber: 1),

Ответы [ 3 ]

1 голос
/ 29 сентября 2019

Функция XylophoneApp.player не возвращает никакого значения, поскольку это функция void (вместо этого она просто воспроизводит звук), где функция XylophoneApp.buildKey возвращает значение типа Expanded, затемвам ли вы хотите использовать возвращаемое значение или нет.

0 голосов
/ 29 сентября 2019

Функции в целом - не только в дротике - состоят из 3 вещей:

  • вход
  • процесс
  • выход

Это как в математике, например, если у вас есть (у = х + 1).Это функция, которая принимает «x» в качестве входных данных, а затем выполняет процесс для этого «x», который добавляет к нему «1» и вещь возвращает результат в «y».В этом простом примере типом ввода является число, а типом вывода также является число.Однако в программировании это не всегда так.Например, у вас может быть функция, которая принимает слово в качестве ввода, а затем подсчитывает, сколько символов в этом слове, и возвращает общее количество символов в этом слове.Но, возможно, вам не нужно знать этот номер.Может быть, вам просто нужно сохранить его в базе данных и вернуться к нему позже.В этом случае вам не нужно возвращать номер или что-либо возвращать.Следует просто сохранить его в базе данных.Что делать, если у вас уже есть это слово в базе данных, и у вас нет его длины там.Ваша функция в этом случае не должна принимать слово в качестве входных данных, она должна сама идти в базу данных, брать слово, считать символы и сохранять результат в базе данных.Видите ли, по сути, у нас все еще есть вход, процесс и выход, но вход и выход не передаются в или из функции напрямую, функция заботится о том, чтобы ее ввод и возвращение было выходным.Так что это действительно зависит от того, что вы хотите, чтобы ваша функция выполняла.

О коде, который вы опубликовали.Посмотрите на функцию play, она принимает songNumber в качестве ввода и имеет тип int, затем она выполняет некоторую обработку, например, создает объект Player и использует songNumber как часть фактического имени файла песни.,Затем выводится песня, воспроизводимая с вашего динамика.Звук, который вы слышите, является фактическим выходом.Вам не нужны никакие другие выходы, кроме звука.Вот почему в коде он возвращается void.С другой стороны, выход второй функции buildKey представляет собой widget типа Expanded, который можно использовать внутри для кодирования.Функция buildKey также принимает color & songNumber в качестве входа.Внутри buildKey Expanded виджет создается.Внутри этого виджета также создается FlatButton.Первый вход (color) используется для указания цвета FlatButton, в то время как второй вход (songNumber) передается функции FlatButton onPressed.Функция onPressed, когда она вызывается нажатием кнопки, она вызывает функцию player, передавая ей ранее songNumber.

0 голосов
/ 29 сентября 2019

Метод player просто воспроизводит песню и возвращается обратно к вызывающей стороне, т.е. не возвращает никакого значения методу вызывающей стороны.Следовательно, тип возвращаемого значения - Void.

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

...