|
Можно ли в условии сделать присваивание в 8-ке? | ☑ | ||
---|---|---|---|---|
0
Stagor
06.03.12
✎
13:58
|
Например так:
if (k = f(5))>0 { // k=5 } |
|||
1
демотиватор
06.03.12
✎
13:59
|
(0)зачем?
|
|||
2
vmv
06.03.12
✎
13:59
|
проверь сообщи о результатах - скажем нет лени!
|
|||
3
Рэйв
06.03.12
✎
13:59
|
Можно
|
|||
4
Stagor
06.03.12
✎
13:59
|
(1) это уже 2-й вопрос, принципиально можно или нет?
|
|||
5
Wobland
06.03.12
✎
13:59
|
(1) ради академического интереса и из приверженности к сишному стилю делал на днях пустой цикл
|
|||
6
andrewks
06.03.12
✎
14:00
|
(0) можно
|
|||
7
Stagor
06.03.12
✎
14:00
|
(3) пример?
|
|||
8
mikecool
06.03.12
✎
14:00
|
(3) это не будет двойным сравнением?
|
|||
9
Wobland
06.03.12
✎
14:00
|
Перем НовоеНаименование;
Пока НЕ Справочники.Картинки.НайтиПоНаименованию(ПолучитьНовоеНаименование(Наим)).Пустая() Цикл КонецЦикла; |
|||
10
НЕА123
06.03.12
✎
14:01
|
func ass(a,b)
a = b; ret a endfunc if (ass(k, f(5)))>0 { // k=5 } |
|||
11
Reset
06.03.12
✎
14:01
|
(0) Нельзя.
Только если из**уться и пасанит функцию Функция Присвоить(А,Б) А=Б; Возврат А; КонецФункции и писать потом if Присвоить(k,f(5))>0 { // k=5 } |
|||
12
Wobland
06.03.12
✎
14:01
|
+(9)
Функция ПолучитьНовоеНаименование(СтароеНаименование) ГСЧ=Новый ГенераторСлучайныхЧисел; НовоеНаименование=СтароеНаименование+"_"+Формат(ГСЧ.СлучайноеЧисло(0, 99999999), "ЧЦ=8; ЧВН=; ЧГ=0")+".jpg"; Возврат НовоеНаименование; КонецФункции |
|||
13
Reset
06.03.12
✎
14:01
|
(11) *написать ;D
|
|||
14
Рэйв
06.03.12
✎
14:02
|
к=ф(5);
Если к>0 Тогда к=5; КонецЕсли; |
|||
15
ShoGUN
06.03.12
✎
14:02
|
Вообще-то в (0) двойное сравнение. В Си-подобных языках(да и не только) синтаксис равенства и присвоения отличается. 1С - нет, так что равенство или сравнение - определяется контекстом.
|
|||
16
Рэйв
06.03.12
✎
14:02
|
(14)-(7)
|
|||
17
vmv
06.03.12
✎
14:02
|
(1) да это просто атавизм почитателей си и срр, пытающихся в один оператор запихнуть влет и посадку ракеты.
иногда полезно не спорю, но часто доходид до маразма с пустым аргументом - это минимизирует коплиляцию кода, просто некоторые еще не выросли из штанишек дос-1.0 и все еще думают, что компяция минимального объектного кода здорово повысит производительность, дикий народ |
|||
18
Stagor
06.03.12
✎
14:02
|
Вот, как на v8 сделать такой код без применения функций:
if ((k=5)>0) {} в условии k получает значение 5 |
|||
19
Рэйв
06.03.12
✎
14:02
|
+(14)
Или Если ф(5)>0 Тогда к=5; КонецЕсли; |
|||
20
Stagor
06.03.12
✎
14:03
|
(15) см. (18)
|
|||
21
ShoGUN
06.03.12
✎
14:03
|
(15) равенство или сравнение => равенство или присвоение.
|
|||
22
Рэйв
06.03.12
✎
14:03
|
(18) подойдет (19) ?
|
|||
23
Stagor
06.03.12
✎
14:04
|
(22) нет, так как в (19) использование функции
|
|||
24
Рэйв
06.03.12
✎
14:04
|
(18) 5 всегда > 0
В чем смысл? |
|||
25
Stagor
06.03.12
✎
14:05
|
(24) это только пример, хорошо
так лучше? f ((k=n*p)>0) {} |
|||
26
Stagor
06.03.12
✎
14:06
|
if ((k=n*p)>0) {}
|
|||
27
Stagor
06.03.12
✎
14:06
|
(26) это выражение на языке 1С8 реально написать в условном операторе или нет?
|
|||
28
Рэйв
06.03.12
✎
14:06
|
(25)
Если n*p> 0 Тогда к=5; КонецЕсли; Так? |
|||
29
ShoGUN
06.03.12
✎
14:07
|
(24) Ты сегодня за компилятор и за КО одновременно? :) Это пример же, не имеющий практического смысла.
(26) Нельзя так сделать, увы. Родом это из бейсика(а может и ещё раньше). Возможно, сознательно избегали побочных эффектов, инкрементов-то тоже нет. |
|||
30
Stagor
06.03.12
✎
14:08
|
(28) нет, именно присваивание должно быть в условии, как тут
if ((k=n*p)>0) {} |
|||
31
Ненавижу 1С
гуру
06.03.12
✎
14:09
|
к = ф(5);
Если к>0 Тогда //к=ф(5) КонецЕсли; |
|||
32
Stagor
06.03.12
✎
14:09
|
(29) "Нельзя так сделать, увы" - все понятно. Так и думал!
|
|||
33
Reset
06.03.12
✎
14:09
|
(30) НЕ МОЖЕТ одиэсный оператор присваивания использоваться в выражениях
|
|||
34
Рэйв
06.03.12
✎
14:09
|
(30) в 1С нет различия между "=" и "==" так что это будет сравнение если его вставить в условие и его можно только с булево сравнить.
Не получится так |
|||
35
Ненавижу 1С
гуру
06.03.12
✎
14:10
|
(30) в 1С такого нет, тут вам не Си-подобный язык
|
|||
36
Stagor
06.03.12
✎
14:10
|
(33) В документации не нашел, что НЕ МОЖЕТ, но скорее всего так и есть!
|
|||
37
ShoGUN
06.03.12
✎
14:11
|
(32) По-моему это очевидно из того, что для присваивания и сравнения используется одна и та же лексема.
|
|||
38
Stagor
06.03.12
✎
14:11
|
(35) Где то написал, что в 1С8 что то взяли из C#, но очевидно не это.
"для каждого" наверно :) |
|||
39
Ненавижу 1С
гуру
06.03.12
✎
14:12
|
(38) ага, еще "Новый"
|
|||
40
zyto
06.03.12
✎
14:13
|
(36)А потом эти люди суют кошек в микроволновку, и говорят что в инструкции не написано что нельзя...
|
|||
41
Песец
06.03.12
✎
14:13
|
(0) Кроме функции никак. В Си такая фишка возможна потому, что оператор "=" в нем возвращает значение.
(18) В твоем примере будет вычислено к=5, возвратит булево, булево будет приведено к числу, которое и будет сравнено с 0. |
|||
42
Stagor
06.03.12
✎
14:21
|
(39) Наивно было бы полагать, что будет, что то из Си.
Си для системщиков, 1С для прикладников (бывших бухгалтеров) :) |
|||
43
Ненавижу 1С
гуру
06.03.12
✎
14:43
|
(42) C# для кого?
|
|||
44
Рэйв
06.03.12
✎
14:44
|
(42) >бывших бухгалтеров
Аха...Сам ноль полный в 1С, а ту да же...Пальцы гнуть. И ярлыки вешать. |
|||
45
Wobland
06.03.12
✎
14:50
|
(44) Интересы: тренинги личностного роста.
всё нормально |
|||
46
Рэйв
06.03.12
✎
14:54
|
(45)Ну да:-) Растет над собой. Прям на глазах:-) Еще пару таких же тем поднимет и вообще с земли не видать будет!
|
|||
47
ShoGUN
06.03.12
✎
14:55
|
(43) Не для кого, а для чего - для низкого порога вхождения :)
|
|||
48
sergeante
06.03.12
✎
15:13
|
ТС не 86... увы. А то бы заклевали.
|
|||
49
Ненавижу 1С
гуру
06.03.12
✎
15:18
|
(47) интересное кино, значит на одни вопросы мы отвечаем в одном ключе, а на другие в другом?
|
|||
50
Stagor
06.03.12
✎
18:27
|
(44) "Сам ноль полный в 1С" - ничего, за пол года поднимишся!
|
|||
51
n koretsky
06.03.12
✎
19:42
|
Если (К = Функ(5)) > 0 Тогда
Сообщить("Вот только кому сдалось такое?"); КонецЕсли; |
|||
52
n koretsky
06.03.12
✎
19:48
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
К = 0; Попытка Если (К = Функ(5)) > 0 Тогда Сообщить("Вот только кому сдалось такое?"); Сообщить("" + Строка(К)); Иначе Сообщить("Или вот такое"); Сообщить("" + Строка(К)); КонецЕсли; Исключение Сообщить("Них оно не работает"); Сообщить("" + Строка(К)); Конецпопытки; КонецПроцедуры Функция Функ(м_Число) Возврат м_Число + 8; КонецФункции //потому, что в данном случае "=" трактуется не как присваивание а как проверка на равенство. //всегда будем получать "Иначе" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |