а где вход?
там же где и выход
Тут не вызова main(), не самой функции нет.
1) ты же понимаешь что программа может занимать больше 24 строчки? а тут даже описание класса не поместилось
2) это h-файл, у него нет main()
2) это h-файл, у него нет main()
Так, падажжи ёбана. Где на скриншоте написано, что перед нами h-файл? И вообще, перед нами реализация, херли ей делать в ашнике?
*ни
Кстати на скриншоте Xcode. В этом IDE при создании проекта по-умолчанию используется компилятор GNU++14, а он довольно новый. По сравнению со временем существования С++ поддержка символов юникод появилась недавно.
И еще скорее всего в других IDE вместо картинок будут прекрасные □□□□
И еще скорее всего в других IDE вместо картинок будут прекрасные □□□□
Ромб с знаком вопроса ещё может быть.
Если я правильно понял, то в случае любви ребенок добавляется в семью только инициатору этой любви. Как-то немного мрачная и пессимистичная история, вам не кажется?
Да и сам код не толерантный.
Вполне в текущих реалиях.
Но так и не узнал про using namespace.
using namespace в хеддере?
Может он новичок, не бей его...
Только глобальный namespace, только ХАОС!
Нихрена не понял, но очень интересно
Если коротко и доступно: Он использует картиночки вместо слов.
Код не работает. Параметры функции разделяются запятой, а не амперсандом.
Ты в курсе что амперсанд в этом коде - не разделитель? Там описывается тип, затем амперсанд (указывает что параметр передается по ссылке), и затем имя параметра.
Согласен. Это ссылка.
Они че, дальше Java'ы пошли? В Java'е нельзя смайлики.
в котлине можно
тока в апострофах
тока в апострофах
На мой взгляд, в Java'е не хватало одной вещи: сделать алгебраические типы, чтобы можно было писать, например, «это строго либо адрес, либо email, либо телефон». Отличный был бы язык.
Котлин разрешил все кроме этого :(
Котлин разрешил все кроме этого :(
дык цейлон же есть
btw цейлону и котлину систему типов пилил один чувак, тока в цейлоне он ее сделал правильно, а в котлине как попросили
btw цейлону и котлину систему типов пилил один чувак, тока в цейлоне он ее сделал правильно, а в котлине как попросили
Немного не понял, чем тебя не устраивает возможность создать в Java свой простенький тип-контейнер, работающий как алгебраический тип? А "строго либо адрес, либо email, либо телефон" вроде описывается дженериками через wildcard.
Я отвечу на твои вопросы, но давай определимся с ценностями.
Один вариант, когда тебе нужно заставить программу скомпилироваться и запуститься, не упав. В принципе не важно, что ты при этом напишешь, кучу if'ов, используешь рефлекшен и т.д.
Другой крайний вариант – это когда ты хочешь получить принципиально другой уровень комфорта от языка и стараешься программировать в стиле «если скомилировалось, значит программа правильная». В этом случае ты начинаешь выжимать максимум из системы типов, как можно реже _менять_ значения переменных и состояние объектов, по возможности избегать null'ов, боже упаси никаких instanceof'ов и т.д. В этой ситуации тебе очень не хватает алгебраических типов.
Если тебя утраивает второй подход, можно обсуждать дальше.
В первом варианте я с тобой соглашусь, что вообще не понятно, в чем проблема. Хотя с wildcard'ами ты конечно наврал.
Один вариант, когда тебе нужно заставить программу скомпилироваться и запуститься, не упав. В принципе не важно, что ты при этом напишешь, кучу if'ов, используешь рефлекшен и т.д.
Другой крайний вариант – это когда ты хочешь получить принципиально другой уровень комфорта от языка и стараешься программировать в стиле «если скомилировалось, значит программа правильная». В этом случае ты начинаешь выжимать максимум из системы типов, как можно реже _менять_ значения переменных и состояние объектов, по возможности избегать null'ов, боже упаси никаких instanceof'ов и т.д. В этой ситуации тебе очень не хватает алгебраических типов.
Если тебя утраивает второй подход, можно обсуждать дальше.
В первом варианте я с тобой соглашусь, что вообще не понятно, в чем проблема. Хотя с wildcard'ами ты конечно наврал.
C wildcard'ами я и не был уверен, потому сказал "вроде" (всё же их применимость очень сильно может зависеть от проблемы). Но ты меня заинтриговал, сам стараюсь выжимать побольше из системы типов, но опыта у меня очень мало. Опиши, пожалуйста, более детально проблему и как с ней поможет справиться алгебраический тип?
Попробую покороче. Во-первых несколько мыслей. Работать с данными произвольного размера можно можно только при помощи: а. массивов. б. алгебраических типов. Во всех остальных случая размер данных фиксирован и известен заранее. Дальше, как нетрудно догадаться, указатели в традиционных языках – это алгебраические типы, а не указатели. В них можно записать либо настоящий указатель, либо специальное значение null. Большинство языков разрешает проверить, что именно из двух вещей хранится в значении, указатель или null. Большинство языков позволяет неявно скастить значение к указателю и использовать его (с крешем, если там был не указатель, а null), например в Java'е, когда ты пишешь p.value. Котлин, если не ошибаюсь, по умолчанию это запретил.
То, что указатель является на самом деле алгебарическим типом только и позволяет писать нам нетривиальные программы. Но есть много случаев, когда этого не хватает. Например, как ты описываешь файловую систему? В ней есть объекты с путем, которые является либо файлом, лило каталогом и все (упрощенно говоря). Как можно описать это на Java'е? Только предложив вернуть два указателя, один из которых указатель на тип File, а другой – указатель на тип Directory. Комбинируя два указателя (которые, напомню, каждый могут иметь специальное значение null), и договорившись, что из них всегда ровно один ненулевой, мы имитируем то, что должно быть выражено гораздо короче:
наш объект либо File, либо Directory и все. Язык должен поддержать это следующим образом:
позволить присваивать в эту переменную только такой тип, либо конкретные перечисленные типы,
дать возможность написать switch, в котором не будет возможности получить null, сразу два значения, class cast и т.д.
при необходимости проследить, что программист написал case'ы по _всем_ подтипам, ничего не забыв и не компилироваться, если исходный алгебраический тип расширили (сузили, поменял).
Такая необходимость очень часто возникает, когда тебе нужно описать некую сложную структуру данных. Например, очень часто всякие деревья с данными так выглядят, особенно AST, но и файловая система – отличный пример.
То, что указатель является на самом деле алгебарическим типом только и позволяет писать нам нетривиальные программы. Но есть много случаев, когда этого не хватает. Например, как ты описываешь файловую систему? В ней есть объекты с путем, которые является либо файлом, лило каталогом и все (упрощенно говоря). Как можно описать это на Java'е? Только предложив вернуть два указателя, один из которых указатель на тип File, а другой – указатель на тип Directory. Комбинируя два указателя (которые, напомню, каждый могут иметь специальное значение null), и договорившись, что из них всегда ровно один ненулевой, мы имитируем то, что должно быть выражено гораздо короче:
наш объект либо File, либо Directory и все. Язык должен поддержать это следующим образом:
позволить присваивать в эту переменную только такой тип, либо конкретные перечисленные типы,
дать возможность написать switch, в котором не будет возможности получить null, сразу два значения, class cast и т.д.
при необходимости проследить, что программист написал case'ы по _всем_ подтипам, ничего не забыв и не компилироваться, если исходный алгебраический тип расширили (сузили, поменял).
Такая необходимость очень часто возникает, когда тебе нужно описать некую сложную структуру данных. Например, очень часто всякие деревья с данными так выглядят, особенно AST, но и файловая система – отличный пример.
Ребята, прекратите давать школоте идеи, скоро аудиозаписями будут программировать
Чтобы написать коммент, необходимо залогиниться