Original mon code ...
[Voici un tableau d'objets avec hoge comme clé].reject(|obj| !obj.hoge.nil?).sum(:hoge)
reject(|obj| !obj.hoge.nil?)
In hoge supprime les nuls,sum(:hoge)
J'allais ajouter hoge sans supprimer.
[Voici un tableau d'objets avec hoge comme clé].select(&:hoge?).sum(:hoge)
reject(|obj| !obj.hoge.nil?)
Maisselect(&:hoge?)
devenu.
J'ai essayé de sélectionner celui que hoge? Évalue comme vrai, c'est ce que j'ai appris cette fois.
Il est possible d'exprimer le nom de l'attribut?
Article similaire existe déjà Mon code original semble avoir été un mauvais code pour une mauvaise odeur. (Page de référence)
J'ai également regardé Rails body code. Cette déclaration de cas semble être la partie pertinente. Pour résumer l'énoncé de cas, ...
Premièrement, vrai est vrai, faux, nul est faux.
when true then true
when false, nil then false
Ensuite, il semble que le récepteur puisse être grossièrement divisé en cas avec et sans l'attribut spécifié.
if !type_for_attribute(attr_name) { false }
if Numeric === value || !value.match?(/[^0-9]/)
!value.to_i.zero?
else
return false if ActiveModel::Type::Boolean::FALSE_VALUES.include?(value)
!value.blank?
end
elsif value.respond_to?(:zero?)
!value.zero?
else
!value.blank?
end
! Type_for_attribute (attr_name) {false}
sera vrai si le récepteur n'a pas le nom d'attribut correspondant.
De plus,Numeric === value || !value.match?(/[^0-9]/)
dans le cas de(Nombres), 0 est faux, sinon c'est vrai.
Si ce n'est pas un nombre, il retournera faux s'il est faux, et vide? Si ce n'est pas le cas.
Ensuite, le récepteur a le nom d'attribut correspondant.
Si value.respond_to? (: Zéro?)
A zéro?, ! Value.zero?
Est évalué comme étant faux quand il vaut 0, sinon c'est vrai.
Si vous n'avez pas zéro?, Le résultat de! Value.blank? Semble être renvoyé.
J'ai pensé qu'il pouvait être utilisé à la place de «attribuer le nom.blank?» Et «attribuer le nom.présent?» Dans de nombreux cas. Ce à quoi je veux faire attention, c'est que cela devient faux quand il est à 0. Il a également été mentionné dans Article de référence. Ce que je voulais faire, c'était simplement additionner, donc ce ne serait pas un problème si 0 était joué, mais je pensais que cela pourrait être un problème dans certains cas.
Merci d'avoir lu jusqu'ici. Veuillez signaler toute erreur et nous les corrigerons. (Cet article n'a rien à voir avec l'entreprise)
Recommended Posts