Как создать функцию, которая может возвращать что-либо в ActionScript - PullRequest
1 голос
/ 24 января 2011

Как заставить функцию возвращать *, звездочкой, я имею в виду, что функция способна вернуть что-нибудь, и затем я могу соответственно ее типизировать?

private function get_current_files_view():TileList
    {
        var tlist:TileList;
        //switch(this[fm_model.files_display_type])
        switch(vs_file_display.selectedChild)
        {
            case cvs_user_files:    
                tlist = tlist_files;
                break;

            case bx_shared_data:                    
                tlist = tlist_shared_with_me;
                break;
            default:    
                throw new Error('Invalid container found');
        }
        return tlist;
    }

Предположим, что в этой функции я хочу, чтобы эта функция возвращала и список плиток, и сетку данных (в зависимости от случая), что должно быть изменено.

Пожалуйста, дайте мне знать Спасибо вам.

Ответы [ 3 ]

11 голосов
/ 24 января 2011

Предположим, в этой функции я хочу это функция, чтобы вернуть и список плиток и датагрид (по делу) что следует изменить.

Если это так, то вы должны вернуть ListBase , который является родительским классом для List и DataGrid.

Если вы хотите иметь возможность вернуть любой объект, вы можете указать тип возврата как Object .

Если вы действительно хотите вернуть что-либо, включая простые значения, такие как целые числа, вы можете использовать *, как было указано в другом ответе. Если это действительно то, что вам нужно, моя интуиция заключается в том, что вам может потребоваться рефакторинг вашего приложения.

8 голосов
/ 24 января 2011

Вам не нужно определять тип возвращаемого значения. Если вы этого не сделаете, вы можете вернуть все или ничего (не рекомендуется):

private function get_current_files_view() { }

Или вы можете определить, что он должен что-то возвращать, но что угодно

private function get_current_files_view():* { }

Или вы всегда можете использовать интерфейс или базовый класс, если хотите быть конкретным:

private function get_current_files_view():ISomeInterface {}

Это помогает? Или я совершенно не понял вашего вопроса?

2 голосов
/ 24 января 2011
private function whatsMyObject:(parameter:*):*
     {
     switch  (parameter.constructor)
             {
             case TileList:     trace("parameter is TileList");
                                break;

             case DataGrid:     trace("parameter is DataGrid");
                                break;

             default:           trace("parameter is neither TileList nor DataGrid");
             }

     return parameter;
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...