Ну вообще то правильно.
var need_kolbasa=1;
if (eagle_exist){
need_kolbasa=10;
}
buy_kolbasa(need_kolbasa);
Нет. Сначала нужно купить палку колбасы И, если будут яйца, то купить десяток неизвестно чего (на этом моменте нужно было выбросить exception и отправить саму жену в магазин)
Таки да. Главный вопрос в типизации. Будет у него максимум палка колбасы. А если в fatal вывалится, то и ее не будет
item = колбаса;
set_count(item,1)
if (есть яйца) set_count(item, 10)
buy()
Где здесь нужно выбросить эксепшен?
А где сказано, что если есть яйца нужно купить колбасу? Жена забыла передать первый аргумент в set_count
Buy(count, item){...}
Buy(1, kolbasa)
if(yaitsa) { buy(10, null) }
Но тогда интерпритатор должен закрыть всё это дело с ошибкой за неимением аргумента при передачи в функцию. Тут интерпритатор просто, чтобы не нарушать ход программы, взял первую попавшуюся величину, которая логично способна быть аргументом.
Так что всё в норме.
так себе интерпретатор, однако...
мой интерпретатор бы в качестве аргумента взял бы «бархатное тёмное 0,5»
Судя по бороде на аватаре, Вы явно не жена из поста. Жена давала другие инструкции. Вот примерный код на тайпскрипте:
/*продукты из магазина, которые покупают вроде колбасы и яиц*/
interface Product {
name: string
count: number
}
/*магазин с продуктами*/
interface Store {
products: Array<Product>
}
/*муж, который умеет покупать продукты и складывать их в поле purchasedProducts*/
interface Husband {
purchasedProducts: Array<Product>
buyProduct: (productName: string, productCount: number) => void
}
/*определяем мужа*/
const husband: Husband = {
purchasedProducts: [],
buy(productName: string, productCount: number) {
this.shoppingStore.push({ name: productName, count: productCount });
},
};
/*определяем магазин*/
const store: Store = {
products: [
{
name: 'колбаса',
count: 100,
},
{
name: 'яйца',
count: 500,
},
],
};
/*Выполняем инструкцию жены: "Дорогой, купи, пожалуйста, палку колбасы*/
husband.buyProduct('колбаса', 1);
/*"и, если будут яйца..."*/
if (store.products.find(product => product.name === 'яйца')) {
/*"купи десяток" - это последняя инструкция. Десяток чего нужно купить не было указано*/
husband.buyProduct(10);
}
Компилятор выдаёт ошибку Expected 2 arguments, but got 1, указывая на husband.buyProduct(10);. Да, ещё жена не проверила наличие денег у мужа на товары, не проверила открыт ли магазин, не проверила хватит ли у мужа грузоподъёмности, чтобы донести покупки и вообще, можно ли выходить на улицу, вдруг там вместо воздуха серная кислота.
Почему это жена должна делать эти проверки, по идее это должно выглядеть так.
husband.parse(`Дорогой, купи, пожалуйста, палку колбасы и, если будут яйца, купи десяток`);
И дальше все завистит от того, насколько хорошо парсер справляется с пониманием хотелок жены.
спор не о чем, вся шутка строится на том, что программист неправильно интерпретировал задачу, а вы тут предлагаете чтобы это правильно сделал парсер, а другие считают, что нужно было интерпретировать по другому, но тоже не правильно(11, null, error).
Я считаю задача поставлена не корректно))
Можно и так, но хотелки нужно правильно формулировать. Жена, в данном случае, повела себя как типичный заказчик и плохо сформулировала хотелку, а потом искренне удивилась результату. Впрочем, ничего нового для мужа
ограничение торговой системы (неявное): операция покупки проводится по одному товару за раз
Исполнение задания жены
товар-перечислимый тип (колбаса, яйца);
количество_штук - целый тип.
поехали
товар=колбаса;
количество_штук=1;
купить товар(количество_штук);
товар=яйца;
если товар есть, то количество_штук=10;
иначе количество_штук=0;
купить товар(количество_штук);
оплатить покупку
получить чек
принести домой
готово
Может это хранимая процедура? INSERT одной палки колбасы в начале процедуры, и UPDATE до 10 палок при условии, что яйца не равны 0 или NULL
INSERT INTO mycart VALUES (‘bologna’,1);
If (@eggs <> NULL)
BEGIN
UPDATE mycart SET number = 10 WHERE items='sausage';
END
Я выбрасываю exception, когда меня приглашают на собеседование и задают вопрос: "Почему Вы хотите работать именно в нашей компании?"
я вообще десяток, бинарно 10 (1 и 0), то есть купить палку колбасы и 2 яйца. Чет впервые мозг прогрузился не доконца с этим десятком
Коллбеки только а ассинхроннщине бывают? И как ты умудрился связать коллбек с выбросом исключения?
все, за исключение я проебался, сорян
ну а где там коллбек я в упор не вижу) пришел в магазин, проверил наличие яиц, купил что надо. Просто последовательность действий. Ну, если в таком виде, как в анекдоте
Тоесть каждую позицию нужно отдельно пробивать на кассе, сверять со списком и идти за следующей?
Вы случайно не фанат запросов к БД в цикле?
скорее так:
buy_colbasa(1)
if egg:
buy_colbasa(10)
т.к. в тз не сказано о том сколько колбасы нужно семье, сказано о том, сколько купить
Это псевдокод) ваш тернарный может быть не понятен многим.
И константу кто использует? И почему булеву сравниваете с нулем?
Тогда уж
var kolbasa = !eags ? 1 : 10
Побитовая магия может быть непонятна многим, а тернарный оператор довольно таки понятен.
Почему булева то? Согласно правилам хорошего тона, булева должна называться is_*, а в *_count обычно int лежит.
Почему не использовать константу, если не собираешся изменять значение?
Кстати, если немного по другому трактовать ТЗ, то можно получить 11 колбасы.
const sausage_count = 1 + (eggs_count > 0 ? 1 : 0) * 10;
Почему булева то?
А зачем вам считать количество яиц? Вы по всему магазину собираетесь их пересчитывать? Вам нужно знать есть ли они ли нет. Для этого лучше is_ использовать
Почему не использовать константу, если не собираешся изменять значение?
Ну а дальше будет условия что если есть кофе, то купи еще 5 колбас.
Как условие появится, так и изменю на let. Да и если всё-таки придётся хранить количество яиц, то переменная с int уже заведена и рефакторить ее не нужно.
Как условие появится, так и изменю на let.
Спорное утверждение. Но да ладно, имеет место быть. Оставим так.
Можно вообще хранить список покупок в массиве, так возможно правильней будет. Или в объекте
Да и если всё-таки придётся хранить количество яиц,И считать их? То есть постоянно выполнять ненужную функцию, которая отнимает много времени.
Мне пару раз приходилось объяснять, как работает китайская подделка под тернарный оператор в lua
local sausage_count = eggs_count > 0 and 10 or 1
Школьники, которые решили делать заклинания в Warcraft 3, сложнее чем «нанести x урона всем вокруг»
тернарный может быть не понятен многим.ну я изначально на это отвечал. Не юзать тернарный оператор из-за того, что он может быть непонятен школьникам?)
Как вы поняли что я не использую его?
Использовать и накидать код, который понятен школьнику на пикабу разное немного. В теме достаточно не программистов, которым не понятно это будет.
Некоторые люди вообще когда-то спрашивали как сравнивать два числа...
А так я вижу лишь то, что у многих нет опыта коммерческого программирования. Глупое понимание стандартного ТЗ и общепринятых практик, использование лишнего никому не нужного функционала.
В теме достаточно не программистов, которым не понятно это будет.
может, им еще основы программирования преподать, чтобы все шутку поняли?
Некоторые люди вообще когда-то спрашивали как сравнивать два числа...ага. 5 лет назад. только я не лез с тупыми домыслами, что какой-то код может быть кому-то непонятен. Давайте дженерики и лямбды не использовать, а то мало ли, кто-то не поймет
А так я вижу лишь то, что у многих нет опыта коммерческого программирования. Глупое понимание стандартного ТЗ и общепринятых практик, использование лишнего никому не нужного функционала.
о чем ты, болезный?
colbasa.Buy();
if(eggs.IsExist()) {
for(int i = 0; i < 10; i++) {
colbasa.Buy();
}
}
colbasa.Count();
buyObject = "kolbasa";
buySize = 1;
if (ObjectIsExists("eggs)) {
buySize =10
};
Buy(buyObject);
кароче тут уже по разному можно. Либо заранее проверить, и только потом переходить к действиям, либо выполнять все последовательно.



Скриншоты комментов
66.4K поста41.9K подписчиков
Правила сообщества
В сообществе можно размещать ЛЮБЫЕ скрины (комментов) с любого сайта!!
ПРИКРЕПИТЬ ССЫЛКУ НА КОМЕНТ ЕСЛИ ОН С Пикабу желательно, но не обязательно!!!
Если скрин не с пикабу, а со стороннего сайта( Твиттер,. Вк, Одноклассники и т.д.) то ссылка не обязательна.
Для сообщества подходит любой скрин, набранный на клавиатуре, даже если это не диалог (под вид Твита) Так же подходит скрин с картинкой и хотя бы одним комментарием под ним, с любого источника.