0
O método @reverse@ é então usado na String que o @gets@ está devolvendo. O método @reverse@
0
é parte da classe @String@. O que significa que *tudo que for uma string tem o método @reverse@
0
- disponível*. Mais sobre classes no próximo capítulo, por enquanto s
ó saiba que *alguns métodos
0
+ disponível*. Mais sobre classes no próximo capítulo, por enquanto s
aiba apenas que *alguns métodos
0
só estão disponíveis para certos tipos de valores*.
0
- Eu não acho que o @reverse@ vai dar muito certo. As autoridades só precisam por um espelho na frente
0
- de "airégiN ad elortnoc o emoT." Prenderão a gente quando as starmonkeys começarem a pousar em Lagos.
0
+ Eu não acho que o @reverse@ dará muito certo. As autoridades só precisam por um espelho na frente
0
+ de "airégiN ad elortnoc o emoT." Prenderão a gente quando os macacoestrelas começarem a pousar em Lagos.
0
- As letras maiúsculas estão
entregando o ouro. Talvez se nós passássemos todas as letras na string
0
+ As letras maiúsculas estão
nos entregando. Talvez se passássemos todas as letras na string
0
para maiúsculas antes de inverter.
0
h3. Sua Repetitividade Compensa
0
- Você me entrega um bloco de notas, cheio de garranchos ilegíveis. Analisando ele, eu começo a notar
0
- padrões. Notar que você parece usar as mesmas palavras repetidamente in your musings.
0
- Palavras como _macacoestrela_, _Nigéria_, _bomba_. Algumas frases até. _Put the kabosh on._
0
+ Você me entrega um bloco de notas, cheio de garranchos ilegíveis. Analisando ele, começo a notar
0
+ padrões. Notar que você parece usar as mesmas palavras repetidamente em suas reflexões.
0
+ Palavras como _macacoestrela_, _Nigéria_, _bomba_. Algumas frases até. _Ponha um fim nisso._
0
Que são ditas toda hora.
0
- Vamos disfarçar estes termos bobos, meu irmão. Vamos ofuscá-los de olhos comichantes que
0
- choram para saber nossos delicados planos e para nos impedir de ter grande prazer e muitos karts.
0
- Vamos trocá-los por linguagem inocente. Novas palavras com significado secreto.
0
+ Vamos disfarçar estes termos bobos, meu irmão. Vamos ofuscá-los de olhos ardentes que
0
+ choram para saber nossos delicados planos e para nos demover de termos grande prazer e muitos karts.
0
+ Vamos trocá-los pela mais inocente linguagem. Novas palavras com significado secreto.
0
- Eu comecei uma lista de palavras, uma @Hash@ do Ruby, que contém estas suas palavras tão freqüentes e perigosas.
0
- Na Hash, cada palavra perigosa é comparada contra uma palavra código (ou frase). A palavra código então
0
- será trocada pela palavra real.
0
+ Eu comecei uma lista de palavras, um @Hash@ do Ruby, que contém estas suas palavras tão freqüentes e perigosas.
0
+ No Hash, cada palavra perigosa é comparada contra uma palavra código (ou frase). A palavra código
0
+ será então trocada pela palavra real.
0
- 'macacosestrela' => 'Phil e Pete, those prickly chancellors of the New Reich',
0
- 'catapulta' => 'chucky go-go', 'bomba' => 'Heat-Assisted Living',
0
+ 'macacosestrela' => 'Phil e Pete, aqueles chanceleres de pavio curto do Novo Reich',
0
+ 'catapulta' => 'chucky go-go', 'bomba' => 'Vida Assistida por Calor',
0
'Nigeria' => "Ny e Jerry's Lavagem a Seco (com Donuts)",
0
- 'P
ut the kabosh on' => 'Put the cable box on'
0
+ 'P
onha um fim nisso' => 'Ponha um fio nisso'
0
As palavras que são colocadas antes da seta são chamadas *chaves*. As palavras depois
0
- das setas, as definições, geralmente são
chamadas de *valores* simplesmente.
0
+ das setas, as definições, geralmente são
simplesmente chamadas de *valores*.
0
Note as aspas duplas em volta de @Ny e Jerry's Lavagem a Seco (com Donuts)@. Já que nas
0
- aspas está sendo usado um apóstrofo, nós não podemos usar aspas simples em torno
0
- da string. (Todavia, você pode usar aspas simples se você colocar uma barra invertida antes
0
+ aspas está sendo usado um apóstrofo (aspas simples), nós não podemos usar aspas simples em torno
0
+ da string. (Todavia, você pode usar aspas simples se colocar uma barra invertida antes
0
do apóstrofo como em: @'Ny e Jerry\'s Lavagem a Seco (com Donuts)'@.)
0
- Se você precisar procurar por uma palavra em específico,
você pode usar o método das *chaves*.
0
+ Se você precisar procurar por uma palavra em específico,
pode usar o método dos *colchetes*.
0
bq. @palavras_codigo['catapulta']@ irá responder com a string @'chucky go-go'@.
0
- Olhe
as chaves como se elas fossem paletes de madeira nas quais as palavras estão em cima.
0
+ Olhe
os colchetes como se elas fossem paletas de madeira nas quais as palavras estão em cima.
0
Uma empilhadeira poderia usar suas pás em cada lado da palete e a trazer da prateleira
0
de volta ao depósito. A palavra na palete é chamada de _indexador_.
0
Estamos pedido para a empilhadeira achar o indexador pra gente e nos trazer de volta
0
Se você nunca esteve num depósito, você pode ver as chaves como alças.
0
Imagine um trabalhador industrial colocando suas luvas e levando o index de volta à
0
- sua custódia. Se você nunca usou uma alça, ou te dar cerca de
0
- trinta segundo pra achar uma e usar antes que eu fique nervoso.
0
+ sua custódia. Se você nunca usou uma alça, vou lhe dar cerca de
0
+ trinta segundos para achar uma e usar antes que eu estoure meus miolos.
0
- Assim como os vários operadores que você viu recentemente,
as chaves indexadoras são
0
+ Assim como os vários operadores que você viu recentemente,
os colchetes indexadoras são
0
simplesmente um atalho para um método.
0
- bq. @palavras_codigo.[]( 'catapulta' )@
irá responder com a string @'chucky go-go'@.
0
+ bq. @palavras_codigo.[]( 'catapulta' )@
responderá com a string @'chucky go-go'@.
0
- Eu me adiantei e salvei
a Hash de código em um arquivo chamado *listadepalavras.rb*.
0
+ Eu me adiantei e salvei
o Hash de código em um arquivo chamado *listadepalavras.rb*.
0
Depois disso, há duas seções. Estou marcando estas seções com comentários, as linhas que começam
0
- com o símbolo *cerquilha #*. Comentários são *notas úteis* que acompanham seu código. Colegas que
0
- vierem ver seu código vão apreciar tal ajuda. Você mesmo, quando vier no seu código novamente
0
+ com o símbolo *cerquilha (jogo-da-velha) #*. Comentários são *notas úteis* que acompanham seu código. Colegas que
0
+ vierem ver seu código vão apreciar tal ajuda. Você mesmo, quando olhar para seu código novamente
0
depois de algum tempo, comentários vão te ajudar a retomar o fio da meada. E ainda existe
0
softwares por aí que pegam seus comentários e fazem documentação à partir deles. (RDoc e Ri --
0
veja o Pacote de Expansão #1!)
0
Eu gosto de comentários porque posso passar os olhos por uma grande pilha de código e identificar pontos importantes.
0
- Como os comentários nos dizem, a primeira seção
de pergunta uma idéia maléfica e a troca por uma
0
+ Como os comentários nos dizem, a primeira seção
pergunta por uma idéia maléfica e a troca por uma
0
palavra código. A segunda seção salva a idéia codificada num novo arquivo de texto.
0
que tomará o lugar como segundo argumento*.
0
- Por que nós não estamos we hanging on to the answer from @gsub@? Doesn't @gsub@ give us an answer back that
0
- we should keep? You'd think the line would read:
0
+ Por que nós não estamos aguardando a resposta do @gsub@? O @gsub@ não nos dá um resposta que devemos guardar?
0
+ Você acha que a linha deveria ser assim:
0
Sim, com @gsub@ nós temos que ficar com a resposta. Estamos usando uma variação do @gsub@ que é
0
- totalmente h
yper. Notou a *exclamação* no @gsub!@ usada dentro de cada bloco @each@? A
0
+ totalmente h
iper. Notou a *exclamação* no @gsub!@ usada dentro de cada bloco @each@? A
0
exclamação é um sinal de que @gsub!@ é meio radical. Veja, @gsub!@ vai mais longe e
0
*troca as palavras em @ideia@ diretamente*. Quando ele termina @ideia@ vai conter a nova string
0
alterada e você não vai mais achar a string velha.
0
Pode chamar @gsub!@ de *método destrutivo*. Ele faz suas modificações no valor diretamente. Enquanto @gsub@
0
deixa o valor intacto, apenas respondendo com uma nova string que contém as alterações.
0
- (
Why must @gsub!@ scream when he descends upon his prey? Merciless assailant!)
0
+ (
Por que o @gsub!@ tem que gritar quando ataca sua presa? Assaltante cruel!)
0
- h3. Arquivo
de Texto de um Homem Louco
0
+ h3. Arquivo
s de Texto de um Louco
0
Vamos salvar a idéia codificada em um arquivo.
0
O método @strip@ serve pra todas strings. Este método *corta espaços e linhas vazias* do *começo
0
- e fim* de uma string. Isto irá remover o _Enter_ no fim da string que você digitou.
0
- E também irá remover espaços caso você tenha acidentalmente deixado algum.
0
+ e fim* de uma string. Isto removerá o _Enter_ no fim da string que você digitou.
0
+ E também removerá espaços caso você tenha acidentalmente deixado algum.
0
Depois que temos o nome da idéia, vamos abrir um novo arquivo de texto em branco. O nome do arquivo é
0
Estamos usando o método de classe @File::open@ para criar um novo arquivo. Até agora, nós usamos
0
- vários métodos do kernel para fazer nosso serviço. Nós damos uma string pro método @print@ e ele a
0
- imprime na nossa tela. Um segredo sobre método do kernel como @print@: eles são na verdade
0
+ vários métodos do kernel para fazer nosso serviço. Nós damos uma string para o método @print@ e ele a
0
+ imprime na nossa tela. Um segredo sobre métodos do kernel como o @print@: eles são na verdade
0
renomeiam, ou deletam arquivos. Eles estão todos organizados dentro da classe @File@.
0
- bq. @File::read( "ideia-mostarda-mais-codein
e.txt" )@ vai responder uma com uma string
0
+ bq. @File::read( "ideia-mostarda-mais-codein
a.txt" )@ responderá com uma string
0
contendo todo o texto do seu arquivo de idéias. (Read significa ler.)
0
- bq. @File::rename( "aquivd_antigo.txt", "aquivo_novo.txt" )@
irá renomear o @aquivo_antigo.txt@.
0
+ bq. @File::rename( "aquivd_antigo.txt", "aquivo_novo.txt" )@
renomeará o @aquivo_antigo.txt@.
0
- bq. @File::delete( "aquivo_novo.txt" )@
irá explodir o novo arquivo.
0
+ bq. @File::delete( "aquivo_novo.txt" )@
explodirá o novo arquivo.
0
Estes métodos File estão todos *dentro do Ruby*. Estão apenas armazenados num
0
arquivo. (Outras opções são: @'r'@ para ler o arquivo ou @'a'@ para adicionar no fim do arquivo.)
0
- O arquivo está aberto para escrita e nos é dado na forma de variável @f@, que pode ser vista
0
- *descendo a calha pra dentro do nosso block*. Dentro do bloco, nós escrevemos no arquivo. Quando
0
+ O arquivo está aberto para escrita e nos é dado na forma da variável @f@, que pode ser vista
0
+ *descendo a calha para dentro do nosso bloco*. Dentro do bloco, nós escrevemos no arquivo. Quando
0
o bloco se fecha com @end@, nosso arquivo é fechado também.
0
-
Nessa altura, você já deve estar sabendo o que este exemplo faz. Não vou te incomodar com
0
+
A esta altura, você já deve estar sabendo o que este exemplo faz. Não vou te incomodar com
0
detalhes mundanos. Veja se você consegue entender sozinho como isso funciona.
0
Contudo, temos um método de classe interessante aqui. O método @Dir::[]@ procura num diretório (alguns
0
- de vocês podem chamá-los de "pastas"). Assim como você viu com as Hashes, os colchetes indexadores
0
- pode ser métodos de Classe. (Começando a ver a brilhante, glinting gorgeousness of Ruby?)
0
+ de vocês podem chamá-los de "pastas"). Assim como você viu com os Hashes, os colchetes indexadores
0
+ podem ser métodos de Classe. (Começando a ver a brilhante, glinting gorgeousness of Ruby?)
0
Então nós estamos usando a empilhadeira para pegar os arquivos no diretório que coincidem @'ideia-*.txt'@. The
0
Esta *lista de arquivos* vem na forma de @Array@ a Centopéia, com uma @String@ para cada
0
- arquivo. Se você está curioso e que
brincar com @Dir::[]@, tente isso:
0
+ arquivo. Se você está curioso e que
r brincar com @Dir::[]@, tente isto:
0
bq. @p Dir['ideia-*.txt']@ irá imprimir:
0
- bq. @['ideia-mostarda-mais-codein
e.txt']@ (_um Array de nomes de arquivos!_)
0
+ bq. @['ideia-mostarda-mais-codein
a.txt']@ (_um Array de nomes de arquivos!_)
0
Sim, o método @p@ funciona igual @print@. Mas @print@ é para se imprimir strings,
0
bq. @["send", "display", "name", "exist?", "split",@ ... _a lista completa dos nomes dos métodos!_ @]@
0
-# h3.
Extra Credit: PStore
0
+# h3.
Creditó Extra: PStore
0
-# journal = PStore.new( 'journal.p' )
0
-# journal.transaction do
0
+# jornal = PStore.new( 'jornal.p' )
0
+# jornal.transaction do
Comments
No one has commented yet.