Ma question est la suivante:
Quelle est la différence entre Je crois qu'il y a une différence parce que de cette question:
Ajout d'un champ à une structure vide P> Exemple d'illustration minimal: p> L'erreur donnée: p> une structure de nom de point est illégale lorsque la structure est vide. Utilisez un indice sur le
structure. p> p> s code> et s (:) code> si s code> est une structure vide.
3 Réponses :
En fait, voici un autre étrange pour vous:
%# careful MATLAB will crash and your session will be lost!
S = struct();
S = setfield(S, {}, 'g', {}, 0)
Joli! En outre, je confirme la faute SEG sur R2012b et R2012a
Je viens de l'essayer sur Matlab 2014b et il se bloque toujours. Amusement.
N'écrase plus sur 2015b et 2016b.
Notez que si vous souhaitez créer une structure vide avec champ si cela donne une structure 0x0. p> p> [S (:). b] = transaction (0) code> est équivalent à [S (1: fin) .b] = transaction (0) code>, lequel Développe à [S (1: numel (s)). B] = transaction (0) code> ou, dans votre cas particulier [S (1: 0) .b] = 0) code>. Ainsi, vous ne traitez pas d'aucun des éléments de la structure, que je m'attendais à travailler, même si je le trouve encore quelque peu surprenant que cela ajouterait un champ B code>. Peut-être que c'est cette étrangeté particulière, que vous ne pouvez accéder que par le biais de la spécification explicite explicitement de la liste des champs, qui est capturé par l'erreur. B code> , vous pouvez alternativement écrire p>
En réalité la différence entre Une raison pour laquelle cela pourrait être le cas, c'est parce que cela vous permet de choisir si vous souhaitez accéder à la structure ou à son contenu. p> Un exemple pratique serait l'affectation de Les deux actions font ce que vous attendez, et cela ne serait pas possible sans la distinction entre une structure et tous ses éléments. p> p> s code> et s (:) code> s'applique aux structures en général, non seulement pour vider les structures. [] code> afin de supprimer quelque chose: p> s < / code> est maintenant une structure vide, mais contiendrait toujours tous les champs qu'il avait auparavant. p> t code> d'autre part, est maintenant simplement devenu la matrice vide [] code>. p>
Lors de la vérification de la façon dont cela généraliste, j'ai couru dans ceci: Stackoverflow.com/questions/18959702/...