Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Return как Вернуть по-человечески - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Return как Вернуть по-человечески Сугубо для тех, кто имел мало практики
Оценка: -----

#11
Пользователь офлайн   Nestyreff 

  • Stone tm
  • Вставить ник
  • Раскрыть информацию
Добавил сырой пункт 7
0

#12
Пользователь офлайн   Sonic X 

  • X != Х
  • Вставить ник
  • Раскрыть информацию
return также останавливает цикл, только при этом можно что-то вернуть. Например, запустить функцию :happy:
0

#13
Пользователь офлайн   VVWVV 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Я, конечно, понимаю, что вы хотели как можно более понятнее изложить мысль конечному новичку, но зачем так-то? Вы не используете принятую терминологию (её тоже нужно новичкам изучать), излагаете мысли так, будто сами в этом не уверены.
0

#14
Пользователь офлайн   Nestyreff 

  • Stone tm
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияVVWVV (14 Апрель 2018 - 22:51) писал:

Я, конечно, понимаю, что вы хотели как можно более понятнее изложить мысль конечному новичку, но зачем так-то? Вы не используете принятую терминологию (её тоже нужно новичкам изучать), излагаете мысли так, будто сами в этом не уверены.

Я не пытался объяснить, что такое return, я пытался объяснить его использование и как его нужно использовать. Этот материал можно понять имея практику, а так, Вы можете ещё сильнее углубляться в использовании этого оператора, просто прочитав статью(конечно практика все равно нужна). Если у меня это не получилось, то это моя вина и я буду пытаться это исправить в последующих редакциях.

Просмотр сообщенияSonic X (14 Апрель 2018 - 22:39) писал:

return также останавливает цикл, только при этом можно что-то вернуть. Например, запустить функцию :happy:

В 7 пункте это есть)

Сообщение отредактировал Nestyreff: 14 Апрель 2018 - 22:55

0

#15
Пользователь офлайн   SooBad 

  • SB org
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNestyreff (14 Апрель 2018 - 07:44) писал:

Оператор Return в Pawn оперирует виртуальной машиной(компилятором amx).

Компилятором amx? Давно "amx" стал компилятором?) Компилятор генерирует байткод, который вследствие запускается на виртуальной машине. Файлы, имеющие разрешение ".amx" - это конечно скомпилированные файлы, с разрешением .pwn

Просмотр сообщенияNestyreff (14 Апрель 2018 - 07:44) писал:

Оператор Return может возвращать переменную по ссылке (new) и многое другое.

new? Я говорил про статические аргументы.

Просмотр сообщенияNestyreff (14 Апрель 2018 - 07:44) писал:

Стоит заметить, что Kick(); вернёт еще и своё значение (return 1) и поэтому функция ReturnKick(playerid) будет равна 1.

Это как так? Функция будет равна 1?

Просмотр сообщенияNestyreff (14 Апрель 2018 - 07:44) писал:

В итоге, можно понять, что goto управляет "механически циклом" и является некой пародией на return.

goto не управляет циклом. Оператор позволяет выйти из него, при определенном условии и, в свою очередь, не прервать работу исходной функции, в отличие от return. Вот в чём их ключевое отличие. Когда я говорил про "альтернативу", я не это имел ввиду.

Сообщение отредактировал SooBad: 14 Апрель 2018 - 23:46

0

#16
Пользователь офлайн   Nestyreff 

  • Stone tm
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSooBad (14 Апрель 2018 - 23:44) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

"Давно "amx" стал компилятором?)" - Нет, я говорил про компилятор, который создаёт файл amx, так как в JScompile тоже есть SAMP API и там компилятор создаёт разные файлы, от executor до json

"new? Я говорил про статические аргументы." - Из Java я знаю, что ссылка это new. Поэтому решил написать так), сейчас исправим.

"Это как так? Функция будет равна 1? " - Да, так как будет возвращать функцию, которая возвращает единицу, если я ничего не путаю
0

#17
Пользователь офлайн   SooBad 

  • SB org
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNestyreff (15 Апрель 2018 - 07:30) писал:

Нет, я говорил про компилятор, который создаёт файл amx, так как в JScompile тоже есть SAMP API и там компилятор создаёт разные файлы, от executor до json

Так конечный файл мы получаем в результате интерпретирования. И в JSc, и в pawncc интерпретатор встроен изначально. Как я уже сказал выше, компилятор (в абстрактных языках) генерирует только байт-код (P-код).

Просмотр сообщенияNestyreff (15 Апрель 2018 - 07:30) писал:

Из Java я знаю, что ссылка это new. Поэтому решил написать так), сейчас исправим.

Так а причём тут Java? Оператор new в Java (как и в Си++) работает совершенно по-другому принципу. Он возвращает ссылку на вновь созданный объект, которая, в свою очередь (после компиляции), вызывает конструктор класса. В pawn классов не существует.

Просмотр сообщенияNestyreff (15 Апрель 2018 - 07:30) писал:

"Это как так? Функция будет равна 1? " - Да, так как будет возвращать функцию, которая возвращает единицу, если я ничего не путаю

Так то, что функция вернет определенное значение, вовсе не значит, что она будет равна данному значению. Функция != переменная.

Сообщение отредактировал SooBad: 15 Апрель 2018 - 12:44

0

#18
Пользователь офлайн   Nestyreff 

  • Stone tm
  • Вставить ник
  • Раскрыть информацию
Отредактировал пункт 7. Спасибо SooBad.
0

#19
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNestyreff (14 Апрель 2018 - 22:57) писал:

Я не пытался объяснить, что такое return, я пытался объяснить его использование и как его нужно использовать.


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

Я солидарен с VVWVV. Читая твою статью, складывается впечатление, что ты сам не особо понимаешь как всё работает, а лишь описываешь какие-то свои представления. Своей статьёй ты лишь запутаешь тех, кому захочется узнать что-то о return.


Взять даже твой третий пункт.
Во-первых, непонятно зачем ты притянул сюда "true" и "false", с учётом того, что функции подразумевают возврат целочисленного значения, а не булевого. Это хоть и не повлияет на работу кода, ибо в Pawn нет типов данных, но всячески рушит логику при чтении кода, если ты привык, что синтаксис кода должен помогать тебе в понимании этого самого кода, а не представлять из себя кашу.
Во-вторых, что это за бред с отсутствием "return 1"? Код команды будет срабатывать только в том случае, если сработает условие (то бишь, введённый текст совпадёт с именем команды, в которой нет "return"). И в этом случае самым худшим будет только то, что в чат покажет стандартное сообщение о том, что команда не найдена, хоть её код и сработает. На другие команды это никак не повлияет.
В-третьих, вместо всей этой непонятной писанины с неказистыми примерами лучше бы написал о том, как возврат того или иного значения влияет на работу сервера (продолжит ли он обрабатывать колбэки в других скриптах/покажет ли сообщение в чат и т.п.). Хотя, судя по всему, ты просто этого не знаешь, раз ещё не написал.

Пункт с рекурсией тоже напичкан каким-то бредом.

Как и пункт с возвратом значения другой функции.

Цитата

Прошу обратить внимание на то, что ReturnKick не возвращает единицу, а возвращает другую функцию, которая в свою очередь уже возвращает 1.

Какую другую функцию она возвращает? "Другая функция" сначала сама вернёт определённое значение, которое впоследствии вернёт и твоя ReturnKick. Не будет никакого "возврата другой функции".
И нет никакой гарантии, что твоя "другая функция" вернёт именно 1, а не 0 (Kick вернёт 0, например, в случае, когда игрок отключён), поэтому и возвращать значение других функций следует крайне осторожно (лучше этого избегать, если сам код того не требует).


В общем, непонятно зачем ты вообще взялся за статью, если сам не понимаешь принципов работы return
0

#20
Пользователь офлайн   Nestyreff 

  • Stone tm
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (16 Апрель 2018 - 12:38) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Как я и говорил уже очень много раз. Быстро ты делаешь выводы. Из всего твоего текста я понял одно: ты не знаешь, что такое "Command Not Found" и не вчитывался в то, что я писал, хотя бы из названия: "Сугубо для тех, кто имел мало практики". Всё остальное жутко необоснованно.

"Пункт с рекурсией тоже напичкан каким-то бредом." - [sarkazm]Да-да.[/sarkazm]
"Как и пункт с возвратом значения другой функции. " "Какую другую функцию она возвращает? "Другая функция" сначала сама вернёт определённое значение, которое впоследствии вернёт и твоя ReturnKick. Не будет никакого "возврата другой функции"." - А я про что? Ты читал, что я говорил? Я написал в ответ SooBad тоже самое.

"В общем, непонятно зачем ты вообще взялся за статью, если сам не понимаешь принципов работы return" - :facepalm:

А теперь еще немного текста:

1. Писал статью я на скорую руку, чтобы потом уже её дополнять исправлять, мне в этом уже помог SooBad, за что ему большое спасибо. Я не один раз сказал о том, что я добавляю пока-что сырой текст, а потом, по мере моей занятости, я буду улучшать или "модифицировать" статью. То что ты видишь, это сырой и некудышный вариант, однако, я постоянно редактирую статью.

2. "сам не понимаешь принципов работы return" - Ну собственно ясно. Я не проходил какой-то тест, а писал здесь ПОНЯТНЫМ или РАЗЖЁВАННЫМ языком. Если ты думаешь, что если человек пишет, то он и думает, то ты ошибаешься. В учебниках в школе пишут очень много неточной информации, а учителя уже сами думают что дополнить, что нет, также и я. А твой вывод вышел из твоего подсознания, дабы оскорбить.

Сообщение отредактировал Nestyreff: 16 Апрель 2018 - 13:10

0

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей