2009-11-11 2 views
0

Как передать функцию 'set' в качестве аргумента Function Function другой функции? например:Передача функции набора в качестве аргумента

public class IdModel 
{ 
    private var _id:String; 

    public function IdModel(source:Source) 
    { 
     //Create Binding 
     BindingUtils.bindSetter(id,source,"id"); 

    } 

    public function get id():String 
    { 
     return _id; 
    } 

    public function set id(value:String):void 
    { 
     _id = value; 
    } 
} 
} 

В приведенном выше примере «ид» аргумент оценивается и возвращает строку, поэтому он не будет компилироваться с ошибкой: «Строка не может быть назначен на аргумент типа Function».

Thanks

+0

Реферирование «идентификатор» будет называть это добытчик. Что вы пытаетесь достичь? –

+0

Привет, Джеймс, как Markus указывает ниже в этом конкретном случае, я мог бы использовать bindProperty, но я хочу инкапсулировать свойство id, потому что в моем фактическом коде функция 'set' выполняет некоторую работу над переданным значением. Второе решение Маркуса делает работу по внешнему виду вещей, это цена, которую мы платим за тонкости, предоставляемую ключевыми словами «получить» и «установить»? –

ответ

1

В данном конкретном случае вам не нужно; Вы можете использовать BindingUtils.bindProperty вместо:

BindingUtils.bindProperty(this, "id", source, "id"); 

Но если вы действительно хотите использовать bindSetter и функции вы можете вероятно сделать:

BindingUtils.bindSetter(function (arg:*): void { id = arg; }, source, "id"); 
Смежные вопросы