The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Dropbox прекращает разработку Pyston. Опубликован финальный ..."
Отправлено Аноним, 08-Фев-17 18:47 
> Говоря про Perl, в нем все есть строка, либо число. В зависимости
> от _контекста_ Perl выбирает, что взять за основу: число или строку.

Тут уже выше упоминали RTFM:

In Perl, the operator determines what operation is performed, independent
    of the type of the operands. For example "$x + $y" is always a numeric
    addition, and if $x or $y do not contain numbers, an attempt is made to
    convert them to numbers first.

    This is in contrast to many other dynamic languages, where the operation
    is determined by the type of the first argument. It also means that Perl
    has two versions of some operators, one for numeric and one for string
    comparison. For example "$x == $y" compares two numbers for equality, and
    "$x eq $y" compares two strings.

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


>>Argument "0 but tru" isn't numeric in numeric eq (==) at -e line 1
> Что ты этим хотел доказать? Ты хоть понимаешь что это варнинг генерируется
> в рантайме? А в Python вообще все зашибись: http://ideone.com/uPfqlK

И что? В питоне тоже все генерируется в рантайме. Динамическая типизация, как она есть.

> Т.о. чтобы защитить код от подобной ошибки ты должен явно объяснять Perl,
> что тебе нужно сравнивать числа:
> shell> perl -le 'print 0 == 0 + "0 but true"'
> shell> 1 # операция валидна

Опять же, выше упоминали RTFM вместе со ссылочкой на код. Конкретно "0 but true"  грязный хак на уровне интерпретатора, поэтому приводить его в качестве примера не очень удачная мысль.

> Строка 0 + $string <-- классический хинт/хак для пояснения Perl, что надо
> все воспринимать как числа.

Это не хинт и не хак. Это особенность грамматики/ЯП. Cм.
> In Perl, the operator determines what operation is performed, independent
> of the type of the operands.

===

> shell> perl -le 'use strict; use warnings; my $num = 123; print
> index $num, "a";'
> shell> -1
> Упс, Perl не выпленул варнинг, что работаем не со строкой. Ай-ай, надо
> срочно накатать плаксивое письмо, чтобы добавили варнинг на этот счет! Мало
> в Perl идиотских варнингов напихали!

Это, извините, полиморфизм и не говорит ни о чем. Вроде как даже в хаскеле прокатывает.

ЗЫ: кстати, есть определенное подозрение, что анонимов на опеннете значительно > 2


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру