[Résolu]Comprendre le script

2 Réponses • 150 Vues

Bonjour tout le monde,

je n'arrive pas à comprendre cette méthode:

# Generate a Pokemon from a hash
      # @param hash [Hash] Hash describing optional value you want to assign to the Pokemon
      # @option hash [Integer, Symbol] :id ID of the Pokemon
      # @option hash [Integer] :level level of the Pokemon
      # @option hash [Boolean] :shiny if the pokemon will be shiny
      # @option hash [Boolean] :no_shiny if the pokemon will never be shiny
      # @option hash [Integer] :form form index of the Pokemon
      # @option hash [String] :given_name Nickname of the Pokemon
      # @option hash [Integer, Symbol] :captured_with ID of the ball used to catch the Pokemon
      # @option hash [Integer] :captured_in ID of the zone where the Pokemon was caught
      # @option hash [Integer, Time] :captured_at Time when the Pokemon was caught
      # @option hash [Integer] :captured_level Level of the Pokemon when it was caught
      # @option hash [Integer] :egg_in ID of the zone where the egg was layed/found
      # @option hash [Integer, Time] :egg_at Time when the egg was layed/found
      # @option hash [Integer, String] :gender Forced gender of the Pokemon
      # @option hash [Integer] :nature Nature of the Pokemon
      # @option hash [Array<Integer>] :stats IV array ([hp, atk, dfe, spd, ats, dfs])
      # @option hash [Array<Integer>] :bonus EV array ([hp, atk, dfe, spd, ats, dfs])
      # @option hash [Integer, Symbol] :item ID of the item the Pokemon is holding
      # @option hash [Integer, Symbol] :ability ID of the ability the Pokemon has
      # @option hash [Integer] :rareness Rareness of the Pokemon (0 = not catchable, 255 = always catchable)
      # @option hash [Integer] :loyalty Happiness of the Pokemon
      # @option hash [Array<Integer, Symbol>] :moves Current Moves of the Pokemon (0 = default)
      # @option hash [Array(Integer, Integer)] :memo_text Text used for the memo ([file_id, text_id])
      # @option hash [String] :trainer_name Name of the trainer that caught / got the Pokemon
      # @option hash [Integer] :trainer_id ID of the trainer that caught / got the Pokemon
      # @return [PFM::Pokemon]
      def generate_from_hash(hash)
        pkmn_id = hash[:id]
        return psp_generate_from_hash(hash) unless pkmn_id # On est donc en mode PSP 0.7

        level = hash[:level].to_i
        shiny = hash[:shiny]
        ns = hash[:no_shiny]
        form = hash[:form] || -1
        hash[:captured_with] ||= hash[:ball]
        return PFM::Pokemon.new(pkmn_id, level, shiny, ns, form, hash)
      end

Enfin quand je dis que je n'arrive pas a la comprendre, je n'arrive pas a comprendre le paramètre en question et plus précisément ces options.

si je prend en exemple cette option (c'est la même chose pour les IV):
# @option hash [Integer] :captured_in ID of the zone where the Pokemon was caught

Je fais un test et il me dit ou je l'ai obtenu sans même renseigner cette option. Ce qui voudrais dire que cette option est optionnel ? Mais alors quelles sont les options optionnel (ou obligatoire)... ?

Une dernière question: Shiny, le force à être shiny, no_shiny à ne pas être shiny... Que ce passe t'il si je mets les 2 à true ?

Si j'ai besoin de comprendre cette méthode c'est parce que j'ai trouvé un script "obsolète" avec dans des commentaires, les modifications à apporté et je trouve que c'est un bonne entrainement :)

D'avance merci à vous.

« Modifié: 10 juin 2021, 20:42:57 par iDestiny »

Nuri Yuri

HostMaster

Le tag @option dit à Yard que ce qui est défini est une clé possible du paramètre hash.
Si tu spécifie captured_in, alors ça doit être un integer. Exemple:
pokemon = PFM::Pokemon.generate_from_hash(id: 5, level: 25, captured_in: 9)
ln(yo) = <3
Le tag @option dit à Yard que ce qui est défini est une clé possible du paramètre hash.
Si tu spécifie captured_in, alors ça doit être un integer. Exemple:
pokemon = PFM::Pokemon.generate_from_hash(id: 5, level: 25, captured_in: 9)

J'ai bien compris, mais si je fais ca:
pokemon = PFM::Pokemon.generate_from_hash()

ça crash, parce qu'il attend un paramètre. Ma question était: quelle @option est obligatoire ?

Mais j'ai trouvé ma réponse en faisant des tests et en lisant les méthodes appeler par generate_from_hash

There was an error while thanking
Thanking...