elixir - mac - phoenix framework tutorial
Cómo comprobar si una cadena está en blanco en el elixir (4)
¿Por qué no solo usar la comparación de patrones?
iex> a = ""
""
iex> b = "b"
"b"
iex> ^b = "b"
"b"
iex> ^a = "your String"
** (MatchError) no match of right hand side value: ""
iex> ^a = ""
""
o mejor aún, compruebe su tamaño de byte
iex> if byte_size("") == 0 do true else false end
true
iex> if byte_size("a") == 0 do true else false end
false
Quiero decir que una cadena está en blanco si está vacía o solo contiene espacios en blanco. Por ejemplo, ""
, " "
y "/n"
están todos en blanco.
En Rieles, tenemos el .blank?
método.
¿Hay algo similar en Elixir (o en el Marco de Phoenix)?
Hay String.strip/1 que convertirá sus 3 ejemplos a ""
que puede comparar.
iex(4)> String.strip("/n") == ""
true
iex(5)> String.strip("") == ""
true
iex(6)> String.strip(" ") == ""
true
Hubo un problema al respecto https://github.com/elixir-lang/elixir/pull/2707
Publiqué una pequeña biblioteca para hacer esto correctamente para cualquier tipo de datos. ¿Implementa el mismo comportamiento que Rails '' blank?
Método en Elixir en la medida de lo posible.
La biblioteca está aquí: https://github.com/samphilipd/blankable
Para instalar, agregue blankable a su lista de dependencias en mix.exs:
def deps do
[{:blankable, "~> 0.0.1"}]
end
String.trim/1 parece hacer el truco a partir de Elixir 1.3.0.
strip
aún funciona, pero estaba en desuso en la versión 1.3.0 y no aparece en los documentos en http://elixir-lang.org/docs/stable/elixir/String.html#functions .