O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

(Não é bem uma dúvida) | É correto usar dessa forma?

Iniciado por Rhyan, 05/04/2020 às 16:14

    var_e = [est, lugar, quant, neces] # Variantes econômicas.
    var_e[0] = [verão, inverno, outono, primavera] # Estações.
    var_e[1] = [n, s, l, o] # Norte, Sul, Leste e Oeste. | Localização.


Acham que está correto usar dessa forma? VXAce.
^~^) -Rhyan.

05/04/2020 às 16:54 #1 Última edição: 05/04/2020 às 16:58 por Raizen
Ah você tinha mandado mensagem, eu vou colocar a mesma resposta que mandei lá  :XD:

Eles se relacionam entre si? Pelo o que eu vejo aqui não, então não acho que faz sentido colocar em uma matriz, matriz é array de array, meio o que você está fazendo agora.

Faça 2 arrays separadas

clima = [verão, inverno, primavera, outono]
lugar = [norte, sul, leste, oeste]

(não coloquei como string, porque não sei como você pretende usar ainda, só deixei a ideia aqui)

Tipo não adianta colocar tudo na mesma variável para parecer "enxuto", se aquilo verbalmente não vai ficar bom para o compreendimento do código, pense que talvez em um futuro você vá querer mexer no seu código.
Ai vai ter que procurar que tem uma array var_e que tem estação, lugar, quantidade e sei lá qual o último tudo na mesma variável.




Você tinha perguntado sobre criar tópico para dúvidas assim, para dúvidas rápidas use esse tópico aqui:
https://centrorpg.com/index.php?topic=28.0

05/04/2020 às 17:04 #2 Última edição: 05/04/2020 às 17:11 por Brandt
Por favor, leia a mensagem com atenção. Gostaria de receber uma resposta para cada ponto levantado, se possível.

Primeiro, isso aí daria problema porque "est", "lugar", etc. não existem. (Aliás, porque não escrever o nome completo?? Quatro letras não vão quebrar sua mão, e pra quem lê fica muito mais fácil entender)
Segundo, o que seria um "var_e"? Achei bem críptico, e não vejo porque você criaria uma variável dessa natureza.
Terceiro, e mais importante: Não, esse uso de Array não é o correto.

Se eu entendi o que você quis fazer aí, sua intenção foi usar posições do Array para representar campos diferentes de alguma coisa (no caso, alguma coisa que inclui uma estação, lugar, quantidade e "neces" (??); não consigo sequer imaginar o que seria, honestamente).
Isso não é um Array, é muito mais uma Tuple (Matemática, Python).

Para esclarecer: uma tupla é uma lista ordenada finita de tamanho constante, e parece muito mais com um Struct que com um Array.
No seu caso, use um Struct mesmo ou então crie uma classe para o objeto que quer:

VarE = Struct.new(:estacao, :lugar, :quantidade, :neces)

# Ou

class VarE
  attr_accessor :estacao
  attr_accessor :lugar
  attr_accessor :quantidade
  attr_accessor :neces
end

# Para criar um objeto do tipo "VarE"

var_e = VarE.new
var_e.estacao # => Estação
var_e.lugar # => Estação
var_e.quantidade # => Estação
var_e.neces # => Estação


Outro ponto, ao invés de criar variáveis para enumerar valores que não mudam (por exemplo estações ou pontos cardeais), use constantes (começam com letra MAIÚSCULA):

ESTACOES = ['Verão', 'Inverno', 'Primavera', 'Outono']
CARDEAIS = ['Norte', 'Sul', 'Leste', 'Oeste']


Mais uma observação: se sua intenção era mesmo simular um "objeto", então a parte de atribuir um array de alternativas a uma variável também está incorreto.
Veja este código:

var_e.clima = ['Verão', 'Inverno', 'Primavera', 'Outono']


O que isso faz é armazenar o Array dentro da propriedade "clima" do "var_e". Tanto é que se dermos um print nela, veremos o array, não qualquer uma das opções que ele contém:

print var_e.clima # => ['Verão', 'Inverno', 'Primavera', 'Outono']


Se o que você quer é garantir que "clima" será uma estação válida (aliás, clima e estação pouco têm a ver; recomendo estudar mais geografia), o correto seria o seguinte:

class VarE
  ESTACOES = ['Verão', 'Inverno', 'Primavera', 'Outono']
  attr_reader :clima

  def clima=(estacao)
    raise 'Não é uma estação!!!' unless ESTACOES.include?(estacao)
    @clima = estacao
  end
end


Sei que já falei isso muitas vezes, mas não posso deixar de ressaltar: Estude. De verdade, simplesmente ver excertos de código e tentar reproduzir sem compreender o que se passa é mímica, não aprendizado. Dificilmente você conseguirá dominar programação por memória muscular.

Aulas de Ruby (Syureri)
Canal do Khas Arcthunder (Khas)
Introdução à Programação (Raizen)
~ Masked