avva: (Default)
[personal profile] avva
Будет интересно только программистам, знакомым с C++.

Кроме обычных вещей, которых мне не хватает, когда я пишу на C++ (ну, типа, защитного шлема, чтоб биться головой об стенку было не так больно) мне очень не хватает метода std::string, который был бы точной противоположностью empty(). Потому что писать в двухтысячный раз if (!сепулька.empty()) подзадолбало, если честно. Ведь дело не в том, что этот ! - лишний знак на экране, а в том, что это пусть крохотный, но каждый раз дополнительный логический прыжок в голове.

Любопытно: я, конечно, понимаю, что можно написать if(сепулька.size()) и это будет правильно работать, но что-то мне не позволяет так писать - видимо, ощущение того, что это слишком C-шная идиома. Ну а написать if(сепулька.size() > 0) - это уже выйдет лекарство хуже болезни.

Нет, хочется именно метода, возвращающего bool и в точности обратного empty(). Но вот незадача - размышляя об этом, я осознал, что не понимаю даже, как он должен называться. Не назвать же его, в самом деле, full(). Понятно, что nonempty() - это опять-таки схоластика. А что тогда? Кажется, тут не только в стандарте C++, тут в языке налицо определенная дырка.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2008-03-29 02:35 am (UTC)
From: [identity profile] xirax.livejournal.com
occupied()
taken()
:D

Date: 2008-03-29 02:41 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
.ok()
.good()
.kosher()

Date: 2008-03-29 02:45 am (UTC)
From: [identity profile] avva.livejournal.com
Ну это просто какая-то дискриминация пустых строк получается.

Date: 2008-03-29 02:49 am (UTC)
From: [identity profile] watkin.livejournal.com
Лучше fullofit

Date: 2008-03-29 03:01 am (UTC)

Date: 2008-03-29 03:01 am (UTC)
ext_615659: (Default)
From: [identity profile] akuklev.livejournal.com
Эта проблема красиво решается Перловым оператором unless(str.empty()). Особые извращенцы даже вводят его «в язык» подходящим #define'ом.

Date: 2008-03-29 03:13 am (UTC)
From: [identity profile] samlazy.livejournal.com
1)
sepulka.here()

2)
sepulka.ThereIs()

Date: 2008-03-29 03:18 am (UTC)
From: [identity profile] max630.livejournal.com
я обычно пишу x == "", x != ""

Date: 2008-03-29 03:48 am (UTC)

Date: 2008-03-29 04:01 am (UTC)
From: [identity profile] a-bronx.livejournal.com
или defined()

Я, кстати, всегда стараюсь выносить все эти предикаты в глобальные функции, потому как обилие строковых типов и способов их проверки задалбывает. Проще всегда и везде писать if (empty(str)) { ... } не заботясь о реальном типе строки.

Date: 2008-03-29 04:04 am (UTC)
From: [identity profile] ygam.livejournal.com
Я в автобусе недавно ехал вместе с юными майкрософтовцами, разговаривавшими по-арабски, и мне запомнилась фраза "солюшн халаль".

Date: 2008-03-29 04:05 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
:))
Привычка просто, что хороший годный для дальнейшей работы объект - не нуль. Для строк это часто тоже так.
Можно ещё .solid()

Date: 2008-03-29 04:09 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
Unless, по-моему, это вообще ужас. Не знаю, как у тех, кто впитал это с молоком матери, а мне всегда приходится переводить это в уме в "если не" и проводить дальнейшие преобразования.

Date: 2008-03-29 04:13 am (UTC)
From: [identity profile] cema.livejournal.com
А пусть как в лиспе, сепулька в булевом контексте означает истину, если она не пустая (так, увы, нельзя: нету булевого контекста). Т.е. было бы if (сепулька).

Date: 2008-03-29 04:14 am (UTC)
From: [identity profile] kisalex.livejournal.com
nonempty() всё-таки будет лучше всего.
Ну или abissel(). Ой!

Date: 2008-03-29 04:28 am (UTC)
From: (Anonymous)
existed()

Date: 2008-03-29 04:38 am (UTC)
From: [identity profile] roza.livejournal.com
Использовать empty() а не size() это хорошая привычка, не надо её менять.
На стандартные стринги обычно делают обёрточку (чтоб менше об стенку, да), и вот там-то имплементируют IsEmpty(), IsNotEmpty() и кого ещё хотят. Написал такое один раз, и уже гораздо реже хочется повесится :)

Date: 2008-03-29 05:12 am (UTC)
From: [identity profile] gaus.livejournal.com
Очевидного не предложили.

сепулька.foo()
cепулька.bar()

Date: 2008-03-29 05:40 am (UTC)
From: [identity profile] a-konst.livejournal.com
Cast to bool?

Date: 2008-03-29 05:40 am (UTC)
From: [identity profile] a-konst.livejournal.com
и в перле, и в руби, вроде бы :)

Date: 2008-03-29 05:48 am (UTC)
From: [identity profile] cema.livejournal.com
Да, в перле похоже. (Руби не знаю.)

I have more

Date: 2008-03-29 05:50 am (UTC)
From: [identity profile] cema.livejournal.com
IsAlmostEmpty(), HasAFew(), HasALot(), NotTooFull(), AboutRightSize()

Anything else?

You mean

Date: 2008-03-29 05:52 am (UTC)
From: [identity profile] cema.livejournal.com
Oy()

Of course, in C# it becomes Oy().ToString()

Тогда уж

Date: 2008-03-29 05:53 am (UTC)
From: [identity profile] cema.livejournal.com
сепулька.bir()
сепулька.yok()

Date: 2008-03-29 06:54 am (UTC)
From: [identity profile] kondybas.livejournal.com
Кстати, да. В естественных языках подходящей конструкции нету, и это понятно. Набор кубиков, или запчастей - вот он. Если его нет, то и говорить не о чем. Это в абстракциях требуются обобщения до континуума, со вводом пустых множеств типа empty(). Но тогда сразу приходится уточнять: множество существует или нет, а если существует, то пустое оно или... или непустое.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 02:26 am
Powered by Dreamwidth Studios