Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Коротко и не ясно. (http://www.flasher.ru/forum/showthread.php?t=211622)

Bletraut 03.10.2015 13:37

Коротко и не ясно.
 
Собственно интересно посмотреть на решение некоторых вопросов в программировании как можно более коротким способом, а именно в одну строку. ХД

Например, сеттер альфы в одну строку

Код AS3:

public function set alpha(n:Number):void { _alpha = (n < 0) ? 0 : (n > 1) ? 1 : n; }

Решение задачи по программированию

Код AS3:

for (var i:int = 1, c:int = 1; i <= n; ++i, c += (Number("0." + i) <= Number("0." + k)) ? 1 : 0 ) if (i == n) trace(c);

Делитесь своими решениями ХД

caseyryan 03.10.2015 14:07

И что в этом особеного? Беспонтовая запись. Такой галимотьи лучше всегда избегать. Это хорошо для каких-нибудь тестов на знание языка (или даже скорее на логику мышления), но для рабочих проектов - это ужасно
Вот здесь таких примеров хоть завались

Bletraut 03.10.2015 14:13

Так я и не говорю, что это в реальных проектах используется. Просто интересно как ещё можно с кодом извратиться.

Zebestov 03.10.2015 14:48

Код AS3:

function someAction(someArg:*, result:SomeClass = null):SomeClass {
    result = result || new SomeClass(); // < вот такая запись у меня повсеместено
    // вычисления, результат которых необходимо вернуть
    // в виде экземпляра класса SomeClass
    // ...
    return result;
}


caseyryan 03.10.2015 15:09

Цитата:

Сообщение от Zebestov (Сообщение 1187608)
Код AS3:

function someAction(someArg:*, result:SomeClass = null):SomeClass {
    result = result || new SomeClass(); // < вот такая запись у меня повсеместено
    // вычисления, результат которых необходимо вернуть
    // в виде экземпляра класса SomeClass
    // ...
    return result;
}


Я даже знаю чем это навеяно :D

Zebestov 03.10.2015 15:16

Ну, у меня это началось с ковирания Starling-а :) а потом плотно вошло в мою жизнь!

Bletraut 03.10.2015 15:34

Цитата:

Сообщение от Zebestov (Сообщение 1187608)
Код AS3:

function someAction(someArg:*, result:SomeClass = null):SomeClass {
    result = result || new SomeClass(); // < вот такая запись у меня повсеместено
    // вычисления, результат которых необходимо вернуть
    // в виде экземпляра класса SomeClass
    // ...
    return result;
}


И как это работает? В чем суть?

Zebestov 03.10.2015 15:37

Что именно? Это это запись типа "если аргумент result зашел как null, придется создать его, чтобы было что возвращать". В противном случае мы работаем с тем объектом, который нам предоставили. Это порой здорово экономит время.

Добавлено через 3 минуты
Ну и всякое такое прочее в одну строку и коротко, вроде такого:
Код AS3:

isDragging && update(); // Обновляем сцену, если в настоящий момент происходит таскание объекта
isDragging || move(); // Если таскание объекта не происходит, двигаем его программно


ZackMercury 03.10.2015 15:56

Zebestov, а так нельзя, чтоли?
Код AS3:

function someAction(someArg:*, result:SomeClass = new SomeClass()):SomeClass {
    // вычисления, результат которых необходимо вернуть
    // в виде экземпляра класса SomeClass
    // ...
    return result;
}

UPD: скомпилил, нельзя)

caseyryan 03.10.2015 16:04

Цитата:

Zebestov, а так нельзя, чтоли?
Код AS3:

function someAction(someArg:*, result:SomeClass = new SomeClass()):SomeClass {
    // вычисления, результат которых необходимо вернуть
    // в виде экземпляра класса SomeClass
    // ...
    return result;
}


Ну во-первых такая конструкция даже не скомпилируется. А во-вторых какой в ней смысл?
У Вадима там при передаче объекта используется он, а при передаче null, создается новый. Зачем создавать новый при любых условиях?


Часовой пояс GMT +4, время: 18:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.