🧪

[ネタ]ElixirでDreams come == true

2022/02/03に公開

そのまま書いた場合

iex> "Dreams come" == true
false

Stringモジュールでboolにしてから比較する

iex> String.valid?("Dreams come") == true
true

https://hexdocs.pm/elixir/1.12/String.html#valid?/1

モジュールを定義して比較する

iex(1)> defmodule Dreams do
...(1)>   def come, do: true
...(1)> end
{:module, Dreams,
 <<70, 79, 82, 49, 0, 0, 4, 156, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 142,
   0, 0, 0, 15, 13, 69, 108, 105, 120, 105, 114, 46, 68, 114, 101, 97, 109, 115,
   8, 95, 95, 105, 110, 102, 111, 95, 95, ...>>, {:come, 0}}
iex(2)> Dreams.come == true
true

ちなみに、Elixirのtruefalseの実態はAtomです。

iex> i true
Term
  true
Data type
  Atom
Reference modules
  Atom
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars

iex> i false
Term
  false
Data type
  Atom
Reference modules
  Atom
Implemented protocols
  IEx.Info, Inspect, List.Chars, String.Chars

https://elixir-lang.org/getting-started/basic-types.html#atoms

Discussion