Olá pessoal, como estamos?
O que acharam de Boo até aqui? Bacana, não!?
Boo é expressiva e elegante. Além disso, possui um compilador flexível que permite a adição de características a linguagem.
No post de hoje, mostro um pouco de sua sintaxe. No futuro, abordarei a modificação do processo de compilação (cada coisa em seu tempo).
Importante destacar que não estou apresentando uma “referência da linguagem” (existe uma disponível em http://boo.codehaus.org/Language+Guide). No lugar disso, apresento algumas considerações relevantes para quem está começando.
Um pouco sobre criação de classes
Criar uma classe em boo é muito simples. Observe:
class Person: pass p = Person() dir p
No exemplo:
- criamos uma classe vazia (sem código);
- criamos uma instância desse tipo;
- listamos os “membros” do objeto.
Abaixo, mostro esse código sendo executado no console REPL de Boo.
Perceba que nossa classe “vazia”, assim como qualquer tipo .NET, têm os métodos ToString, Equals, GetHashCode(), GetType() implementados por default, além de um construtor padrão.
Definir um construtor também é simples. Observe:
class Person:
def constructor(name as string):
_name = name
_name as string
p = Person("Elemar Junior")
dir p
Chamo a atenção para o fato de que o construtor é definido de forma diferente a aquela com que estamos acostumados em Python. Lembre-se Boo é inspirada em Python, porém possui diferenças significativas (para saber mais, consulte http://boo.codehaus.org/Gotchas+for+Python+Users).
Perceba que definindo um construtor, orientamos Boo a não adicionar um construtor default público.
Um pouco sobre expressões lógicas
Em Boo, podemos verificar a igualdade de referência usando os operadores is e == indiferentemente. Observe:
Para “value-types”, apenas o operador == é válido. Observe:
Para confirmar o tipo de um objeto, usamos o operador isa. Observe:
Há, naturalmente, os operadores and, or e not. Acredito que suas aplicações são óbvias.
Um pouco sobre Condicionais
Boo oferece dois comandos condicionais: if e unless. Observe:
def Dummy(a): if a == 10: print "igual a 10" elif a == 11: print "igual a 11" else: print "diferente de 10 e 11"
Bonito! Perceba que a sintaxe do if em boo é idêntica a do python. Mas também há o unless (a menos que), observe:
Além disso, Boo suporta uma sintaxe bem mais natural para condicionais. Algo como “faça isso, se aquilo”, ou “faça isso, a menos que aquilo”. Observe:
def Dummy(a): print "igual a 10" if a == 10 print "igual a 11" if a == 11 print "diferente de 10 e 11" unless a == 10 or a == 11
Bonito! Boo é, ou não expressiva!?! Entretanto, perceba que nesse código todas as comparações são executadas (é diferente de if/elif/else).
Outro exemplo de “faça isso, se aquilo”
Propriedades em Boo
Em Boo é muito fácil definir propriedades. Observe:
class Dummy: Property1: get: return "Property in Boo" _property2 as string Property2: get: return _property2 set: _property2 = value [property(Property3)] _property3 as string [getter(Property4)] _property4 = "This is Property4 value"
Lindo! Acredito que você pegou a idéia do que fizemos nesse código. A figura que segue serve como demonstração:
Difícil não gostar de Boo. Não é mesmo?
Por hoje, era isso
![]()






maio 1st, 2011 → 18:18
[...] A esta altura, deve ter ficado claro que uma mesma sintaxe abstrata pode suportar diversas sintaxes concretas. Toda linguagem possui as duas representações. Isso ficará mais claro quando começarmos a personalizar o compilador do Boo (ops, outra série) [...]
agosto 7th, 2011 → 23:57
[...] de aprender um pouco sobre Boo e trabalharmos um pouco a sintaxe, vamos nos dedicar a estudar uma característica mais “avançada” da linguagem Boo: a interface [...]