LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

А зачем тебе тип переменной указывать в скриптовом языке?

Скриптовый язык - это НЁХ. С таким же успехом можно всё, что не Си и Си++, называть скриптовым языком.

В Perl внутреннее приведение типов существует, и как раз отсутствие возможности указать тип явно (как и «привести» его) - один из рудиментов языка. Когда это всё придумывали считалось, что от типов у людей голова «бобо», и лучше делать эвристику внутри интерпретатора, чем заставлять думать о том, какое представление переменной нужно в данном месте - строковое или числовое (в Perl одна переменная может существовать сразу в нескольких ипостасях с т.з. внутренней логики интерпретатора).

Если не использовать сигнатуры, достаточно просто написать:

sub relocateSun {
  my ($x, $y, $z) = @_;
  ...
}
- не нужно индивидуально каждый $_[0], $_[1] и т.д. присваивать. За 9 лет перловой практики у меня не было проблем с присваиванием аргументам и функций никогда. Вариант с сигнатурами читабельнее, но никакого прямо «прорыва» в понимании написанного он не даёт, это скорее рюшечки. К тому же, часто (очень) входящие аргументы преобразуются в реально используемые переменные сразу после их появления, поэтому если тебе на вход идёт x, а в объективной действительности тебе нужен везде x^2, то нет большого смысла сразу лексически загаживать буковку «x» нигде не нужным значением. Как и возводить её сразу в степень - тоже странно. А вот $x = $_[1] ** 2 - в самый раз.

Исходная версия DRVTiny, :

А зачем тебе тип переменной указывать в скриптовом языке?

Скриптовый язык - это НЁХ. С таким же успехом можно всё, что не Си и Си++, называть скриптовым языком.

В Perl внутреннее приведение типов существует, и как раз отсутствие возможности указать тип явно (как и «привести» его) - один из рудиментов языка. Когда это всё придумывали считалось, что от типов у людей голова «бобо», и лучше делать эвристику внутри интерпретатора, чем заставлять думать о том, какое представление переменной нужно в данном месте - строковое или числовое (в Perl одна переменная может существовать сразу в нескольких ипостасях с т.з. внутренней логики интерпретатора).

Если не использовать сигнатуры, достаточно просто написать:

sub relocateSun {
  my ($x , $y, $z) = @_;
  ...
}
- не нужно индивидуально каждый $_[0], $_[1] и т.д. присваивать. За 9 лет перловой практики у меня не было проблем с присваиванием аргументам и функций никогда. Вариант с сигнатурами читабельнее, но никакого прямо «прорыва» в понимании написанного он не даёт, это скорее рюшечки. К тому же, часто (очень) входящие аргументы преобразуются в реально используемые переменные сразу после их появления, поэтому если тебе на вход идёт x, а в объективной действительности тебе нужен везде x^2, то нет большого смысла сразу лексически загаживать буковку «x» нигде не нужным значением. Как и возводить её сразу в степень - тоже странно. А вот $x = $_[1] ** 2 - в самый раз.