169 похожих чатов

Извиняюсь, не совсем понимаю, почему это работает. Int => Int

же не Nothing => Int
Int => Int <: Nothing => Int?

17 ответов

18 просмотров

Если я не путаю то Nothing является наследником всех классов (чтобы можно было выразить ситуацию когда метод выкинул исклчение)

Я так понимаю, здесь просто Lst[Nothing] приводится к Lst[A], а тип функции не меняется

жесть какая... f - параметр метода, то есть он в контравариантной позиции A => B - Параметр функции (A) тоже в контравариантной позиции Таким образом f: A => B - тут A в дважды контравариантной позиции, то есть в ковариантной позиции

χоρоший ☽☽☽ λисuчко
Извиняюсь, а почему жесть? х)

думать приходится. не люблю я это дело

Simon
жесть какая... f - параметр метода, то есть он в к...

Тогда почему это не работает? case class Sample[+A]() { def method[B](f: A => B) = ??? } val f: Nothing => Int = ??? Sample[Int]().method[Int](f) https://scastie.scala-lang.org/SwQrzrtiSeitPay9C2uAyw

Регіональний Секретар
Тогда почему это не работает? case class Sample[+A...

Ой, а ??? – это способ не писать тело функции, дабы проверить type checking?

Регіональний Секретар
Тогда почему это не работает? case class Sample[+A...

Тут с точностью до наоборот. В коде выше Int => Int используется там, где ожидается Nothing => Int - так можно из-за контравариантности. В вашем коде Nothing => Int используется там, где ожидается Int => Int - так нельзя

f: Int => Int - это функция, которая принимает целое число, и возвращает целое представим, что у нас есть PosInt <: Int, некое положительное подмножество целых, наша функция определена для любых целых чисел, значит для всех положительных как минимум, что скала позволяет записать как f: PosInt => Int таким образом для любого подмножества целых чисед f определена на нём, что соответствует некому суждению в нашей системе типов Nothing соответствует пустому подмножеству значений для множества значений любого типа и любая функция g: A => B определена на нём, что выражается как суждение g: Nothing => B таким образом, какую бы функцию f : A => B вы не передали, она так же является функцией Nothing => B, т.е. функцией с которой снимается необходимость обрабатывать что-либо, и нет никакого противоречия, в том чтобы передать её в метод, принимающий такой аргумент

мне проще так: Int => Int частный случай функции (подтип) Nothing => Int т.к. Nothing это подтип Int то Int более общий тип функция из более общего типа (Int) в менее общий (Int в этом случае, у нас они совпадают) будет подтипом функции

Simon
не верно

почему не верно? верно любая функция из более общего типа в менее общий тип это подтип

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта