powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Dart: Function as Object
5 сообщений из 5, страница 1 из 1
Dart: Function as Object
    #39915453
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Решил начать изучение Flutter, но перед ним начал с Dart.
Иду шаг за шагом по ману + импровизирую, усложняю и т.п.
Вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void main() {
    showMessage( first("Hello!") );
    showMessage( last("Goodbye") );
}

showMessage(Function func){
    func();
}

first(String s1){
    print(s1);
}

last(String s1){
    print(s1);
}



А вот результат:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
C:\Users\AndronovMV\Desktop>dart hello.dart
Hello!
Unhandled exception:
NoSuchMethodError: The method 'call' was called on null.
Receiver: null
Tried calling: call()
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1      showMessage (file:///C:/Users/AndronovMV/Desktop/hello.dart:7:9)
#2      main (file:///C:/Users/AndronovMV/Desktop/hello.dart:2:5)
#3      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
#4      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)



Почему так?

Это стало после того как я добавил аргументы к функциям first и last.

Ранее было так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void main() {
    showMessage( first );
    showMessage( last );
}

showMessage(Function func){
    func();
}

first(){
    print("Hello!");
}

last(){
    print("Goodbye");
}
...
Рейтинг: 0 / 0
Dart: Function as Object
    #39915544
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,
Вам надо к функции применить применить аргументы (а не вызвать функцию) получив новую функцию без аргументов, и ее уже передать в showMessage.
...
Рейтинг: 0 / 0
Dart: Function as Object
    #39915555
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void main() {
    showMessage( first("Hello!") );
    showMessage( last("Goodbye") );
}

showMessage(Function func){
    func();
}

first(String s1){
    return () => print(s1);
}

last(String s1){
    return () => print(s1);
}



или

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void main() {
    showMessage( () => first("Hello!") );
    showMessage( () => last("Goodbye") );
}

showMessage(Function func){
    func();
}

first(String s1){
    print(s1);
}

last(String s1){
    print(s1);
}
...
Рейтинг: 0 / 0
Dart: Function as Object
    #39915568
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё можно как в нодовском setImmediate
https://nodejs.org/dist/latest-v13.x/docs/api/timers.html#timers_setimmediate_callback_args

то есть передаем функцию, потом аргументы.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void main() {
    showMessage(first, "Hello!");
    showMessage(last , "Goodbye");
}

showMessage(Function func, String s){
    func(s);
}

first(String s1){
    print(s1);
}

last(String s1){
    print(s1);
}
...
Рейтинг: 0 / 0
Dart: Function as Object
    #39916184
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О, спасибо!
В мане такого небыло!

И вопрос немного не в тему: у Dart`a в связке с Flutter каковы перспективы на рынке? (Имеется ввиду кол-во работы и ценники на нее.)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Dart: Function as Object
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]