1 / 37

Ruby (2/2)

Ruby (2/2). André Braga Patrícia Lustosa. Intro. Peguem a aula de ontem em /~ plvr para ter como referência para os exercícios de hoje. Exercício. Construa uma Expressão Regular para buscar por padrões que contenham a expressão “ ~if734 ” e que não tenham :

iona
Download Presentation

Ruby (2/2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ruby (2/2) André Braga PatríciaLustosa

  2. Intro • Peguem a aula de ontemem /~plvrparatercomoreferênciaparaosexercícios de hoje

  3. Exercício • ConstruaumaExpressão Regular parabuscarporpadrõesquecontenham a expressão “~if734” e quenãotenham: • Nenhumnúmeroimediatamenteapós • Nenhumespaçoembrancodiretamente antes, mashajaalgumoutrodígito • Faça um métodoparacalcular o fatorial de um númerousando a estrutura de controletimes

  4. Métodos 1)

  5. Return Values • Métodosretornam o valor do último statement avaliado • Um return statement explícitotambémpode ser usado

  6. Default Value Argument • Valor default de um parâmetropode ser especificadodurante a definição de um método

  7. VariableLengthArgumentList • Últimoparâmetro de um métodopode ser precedidopor * indicandoquemais de um parâmetropode ser passadopara a função • Essesparâmetrossãocolecionados e um array é criado

  8. Array Argument • Asterístico (*) tambémpode ser usadoparapreceder um array passadocomoparâmetropara um método • O array é expandido e osparâmetrossãopassadoscomo se tivessemseparadosporvírgulas

  9. Hash Argument • Hash pode ser passadoquandoumafunção é invocada • Une o melhor dos doismundos: paramêtros com nome e quantidade de parâmetrosvariável

  10. DeclarandoVisibilidade • Por default, todososmétodossão public • O acessopode ser restringidoatravés dos métodos public, protected ou private • Nãosãopalavraschave, massimmétodosqueoperamnaclasse, alterandodinamicamente a visibilidade dos métodos

  11. Declaring Visibility • Se private for chamadosemargumentos, ele seta para private todososmétodossubsequentes

  12. Declaring Visibility

  13. Exercício • DefinaumaclasseFuncionárioquecontém um construtorquerecebe um nome e n dependentes (n >= 0) • Crie um novo funcionário com 3 dependentes e imprima-os

  14. Blocos 2)

  15. O quesãoblocos? • Funções (oupedaçoes de código) anônimas • Blococomoparâmetroparaumafunção • Realizariteraçõespassandoelementoscomoparâmetropara a “funçãoanônima”-parâmetro

  16. Passandoblocos • yield()

  17. Blocos com parâmetros yield() podereceberosparâmetros do bloco

  18. Iteração • each, map, select, reject Rejectfuncionadamesma forma

  19. Map & ! new

  20. Exercício 1 • Faça um programaquecrieuma PG com fator 7 de 15 números e: • Excluaoselementosmenoresque 36 • Crie um Hash com oselementosquesobrarem, onde a chave de cadaelemento é o próprio valor no formato de String. • No final, imprima as chaves e valores do Hash. Dica: Vá no irb(Hash.methods) ou no fxriparadescorirmétodosdaclasse Hash.

  21. Exercício 2 • Use o códigodaquestão anterior de forma queelesejapassadocomo um blocoparaumaoutrafunção. Esseblocodeverecebercomoparâmetro a quantidade de elementosda PG, o fator e o valor mínimo.

  22. Exceções 3)

  23. Exception Class • Exceçõessãoimplementadascomo classes queherdam de Exception

  24. Exception Handling

  25. DSL 4)

  26. Embedded DSL • EmbutirumaDSL emumalinguagem host pode ser usadaparadefini-la, no lugar de construir um compiladorouinterpretador

  27. Embedded DSL • EmbutirumaDSL emumalinguagemdinâmica é umatécnicaconhecida • Sintaxenão-intrusiva • Habilidade de avaliarexpressões a medidaqueelasaparecem no programa • Emuma embedded DSL, o designer extende as construçõesdalinguagem host com construções de domínioespecíficoaoinvés de construir um parser

  28. Meta-modelos • Meta-modelo define a sintaxeabstrata de uma DSL • Umalinguagem de meta-modelagempode ser consideradauma DSL paradefinir meta-modelos

  29. Embedded DSL • Essaabordagemparaimplementaruma DSL gastamenos tempo do que um gerador de parser • Nãohánecessidade de lidar com gramáticaouárvoresintáticaabstrata • Poroutrolado, definirumasintaxeabstrataarbitrária é impossível, porquehá a limitaçãodasintaxedalinguagem host

  30. Ruby on Rails 5)

  31. Práticas-padrão Convention over Configuration Adaptabilidade Don’t Repeat Yourself (DRY) Agile Development Environment Geração de código Testes Recompilação, deploy…

  32. Algunspontos • Migrations • Gerenciaevolução de um schema (BD) • Rake • Linguagem de “build” para Ruby • Automatizatarefas: create e drop de tabelas, testes, atualizaarquivos de suporte, etc. • Generator • URL Routing • Permiteexpressõesregulares

  33. Scaffolding • Cria “esqueleto” • Prototipaçãorápida • Padrõespara: • Listar • Criar • Atualizar • Remover • Lógica e template defaults

More Related