Vamos aprender Boo – Parte 2 – Um pouco de sintaxe

Publicado em 01/05/2011

2


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.

image

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.

  image

Um pouco sobre expressões lógicas

Em Boo, podemos verificar a igualdade de referência usando os operadores is e == indiferentemente. Observe:

image

Para “value-types”, apenas o operador == é válido. Observe:

 image

Para confirmar o tipo de um objeto, usamos o operador isa. Observe:

image

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:

image

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).

image

Outro exemplo de “faça isso, se aquilo”

image

 

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:

image

Difícil não gostar de Boo. Não é mesmo?

Por hoje, era isso

Alegre

Etiquetado:
Publicado em: Sem categoria