Можно ли передать анонимную функцию в качестве аргумента и заставить ее выполняться немедленно, таким образом передавая значение функции return
?
function myFunction(Array $data){
print_r($data);
}
myFunction(function(){
$data = array(
'fruit' => 'apple',
'vegetable' => 'broccoli',
'other' => 'canned soup');
return $data;
});
Это вызывает ошибку из-за ] Подсказка типа Array
, жалоба на переданный объект. Хорошо, если я удалю подсказку типа, она, конечно же, выдаст Closure Object
, а не результаты, которые мне нужны. Я понимаю, что технически я передаю экземпляр объекта Closure
в myFunction
, однако я почти уверен, что видел это в другом месте. Это возможно? Если да, то что я делаю не так?
Ради этого обсуждения я не могу изменить функцию, которой я передаю закрытие.
tl; dr: Как я могу передать объявление анонимной функции как аргумент
открытый класс MessageHeader
{частный гид? messageId; public Guid MessageId {get {if (messageId == null) ... У меня есть следующая модель: Теперь по неизвестной причине DataContractJsonSerializer не может десериализовать JSON в словарь ( См. Раздел дополнительных сведений). [DataContract]
public class MessageHeader
{
private Guid? messageId;
public Guid MessageId
{
get
{
if (messageId == null)
messageId = Guid.NewGuid();
return messageId.Value;
}
}
[DataMember]
public string ObjectName { get; set; }
[DataMember]
public Dictionary
К сожалению, DataContractJsonSerializer также закрыт по причинам, не зависящим от меня.
Мне нужен способ обойти это, есть ли у кого-нибудь подсказка?