Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Пространство имен (http://www.flasher.ru/forum/showthread.php?t=180427)

Krusty 03.06.2012 00:37

Пространство имен
 
Когда мы определяем функцию не как принадлежащую экземпляру класса, а как принадлежащую самому классу, то можно ли с этой функцией работать в других пакетах/объектах без указания имени класса перед ней?
Через что это реализуется в AS3? Пространство имен?

zuxul 03.06.2012 00:50

Пакеты

expl 03.06.2012 01:34

один из способов - написать обертку в виде функции в отдельном файле
Код AS3:

package {
    public function doSomething():void {
        MyClass.doSomething();
    }
}


Krusty 03.06.2012 12:44

т.е. кроме обвертки, math.round до round не сократить?

Партизан 03.06.2012 12:51

Цитата:

Сообщение от Krusty (Сообщение 1082660)
т.е. кроме обвертки, math.round до round не сократить?

Код AS3:

var round:Function = Math.round;

Один вопрос: Зачем?

Krusty 03.06.2012 22:31

Ну та же обвертка, в виде ссылки.
рефакторинг, чтож еще

Партизан 03.06.2012 23:17

Цитата:

Сообщение от Krusty (Сообщение 1082726)
Ну та же обвертка, в виде ссылки.

А вы как себе видите по-другому? В питоне есть кажется оператор as выглядит примерно import Math.random as random
ну та же ссылка только боком по сути.
Цитата:

рефакторинг, чтож еще
Не думаю, что с таким подходом будет удобнее. Мне к примеру гораздо удобнее сразу понимать где искать функцию, а не шорткат[... еще шорткат] > функция

expl 04.06.2012 00:17

В haXe можно так написать:
Код AS3:

import flash.display.Sprite;
import flash.display.Shape;
...
using Math;
...
trace(10.5.round());

Только это никак не помогает рефакторингу. Всмысле как это помочь то должно?

Krusty 04.06.2012 00:38

Идейно так. Я с as3 мало работал. У меня сейчас проект-300кбайт *****кода, и вроде бы как даже заработал. И там полный бардак- десятки классов, совсем разных по сути, хочу структурировать, для дальнейшего использования.
Основа
Код AS3:

package test
{
public class Main extends Sprite
        {
public function Main():void
                {
}}}

Как в as3 правильно разносить определения классов- допустим, в разные пакеты, в один пакет, потом импорт делать всего, не всего. Файл один(все вместе), файлов много, файлов два(под основу и под импорт).

expl 04.06.2012 00:53

А у нас сейчас 3650 Кб кода проекта (не считая либ), но я всё равно не понимаю при чем здесь вызов статических функций без точки.

Если надо делать большой рефакторинг с переносом и переименованием кучи всего - установите FlashBuilder(для таких рефакторингов лучше средства еще не сделали - может Idea только) - создайте проект - попереносите там всё.

60-дневной полнофункциональной триальной версии на это хватит, если останавливает платность.

Кстати, с какого языка перешли?
Если чего - это не PHP - #include здесь для подключения кучи функций не используют (хотя он есть)
import - это просто указание какой класс использовать во избежании конфликтов одноимённых классов в разных пакетах.


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

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