Posts Tagged ‘false’

Ruby on Rails diferença entre os métodos nil?, empty? e blank?

Postado em 07 jul 2009
Categoria(s) Ruby on Rails

nil?
O método nil? testa se o objeto é uma instância da class NilClass, usado geralmente para indicar um valor inválido.

empty?
O método empty? testa se o objeto é vazio, depende da classe do objeto, por exemplo String#empty? retorna true se a string não conter caracteres, Array#empty? e Hash#empty? retorna true se o array ou hash não tiver entradas, para outras classes você deve consultar o seu comportamento.

nil.nil?
=> true
 
false.nil?
=> false
 
1.nil?
=> false
 
0.nil?
=> false
 
"".nil?
=> false
 
[].nil?
=> false
 
"".empty?
=> true
 
"abc".empty?
=> false
 
[].empty?
=> true
 
[1, 2, 3].empty?
=> false
 
1.empty?
=> NoMethodError

No último exemplo o método empty? não é definido na classe Fixnum.

blank?
O método blank? é implementado no Rails, ele testa se um objeto é false, empty, uma string com espaços, por exemplo: “”, ” “, nil, [], e {} são blank.

Esse método simplifica:

Ao invés de fazer:

if !address.nil? && !address.empty?

Você pode fazer:

if !address.blank?

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby como verificar se uma variável existe similar ao isset do PHP

Postado em 17 jun 2009
Categoria(s) Ruby

No PHP existe a função isset ela é muito interessante para testar se uma variável existe, ela retorna true caso exista e false caso contrário.

Por exemplo:

1
2
3
4
5
6
7
8
public function cleanAttributes($params)
{
  if (isset($params['title'])) {
    $params['title'] = strip_tags($params['title']);
  }
 
  return $params;
}

No Ruby você pode fazer o mesmo usando o operador defined?.

Por exemplo:

1
2
3
4
5
6
7
8
9
def clean_attributes(params)
  if defined?(params['title'])
    if !params['title'].nil?
      params['title'] = params['title'].strip_tags
    end
  end
 
  return params
end

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

A Falta de padronização dos retornos dos métodos de consulta do ORM Doctrine são irritantes

Postado em 05 dez 2008
Categoria(s) Doctrine

A Falta de padronização dos retornos dos métodos de consulta do Doctrine são irritantes, no ORM Doctrine as consultas realizadas com Doctrine_Query e o método findByDql retornam valores diferentes.

O Doctrine_Query retorna false, caso não satisfaça a condição where, já o método findByDql retorna um array vazio.

Essa falta de padronização é muito ruim.

Por exemplo:

1
2
3
4
$q = new Doctrine_Query();
$q->from('Status')->where('name = ?', 'exemplo');
$r = $q->execute();
var_dump($r);

Essa forma de consulta retorna false, caso name = ‘exemplo’ não exista. Eu acho esse retorno correto, ou null.

Mas o método findByDql tem um retorno fora de padrão, retornando um array vazio.

Por exemplo:

1
2
$status = Doctrine::getTable('Status')->findByDql("name = 'exemplo'");
var_dump($status);

O ruim é ter que usar essas tecnologias despadronizadas. :-(
Mais um ponto negativo para o Doctrine.

  • Share/Bookmark

Usando Event.observe no Framework Javascript Prototype

Postado em 07 out 2008
Categoria(s) JavaScript, Prototype

No Prototype existe a função Event.observe, essa função serve para adicionar uma função a uma determinada ação, por exemplo você deseja que sempre que a tela seja carregada uma função javascript seja disparada você pode fazer algo assim:

1
2
3
4
5
6
Event.observe(window, 'load', init, false);
 
function init()
{
  alert('Olá');
}

Essa função Event.observe associa a página/janela (window) com o evento onload (load), e chama a função javascript init quando esse evento ocorre, desta forma sempre quando a página for carregada a função init() será chamada.

  • Share/Bookmark