動かざることバグの如し

近づきたいよ 君の理想に

elixir

Elixirでパイプ中にpryでデバッグしたい

環境 Elixir 1.x コード Elixirのパイプ演算子便利なんだけど、途中の変数変化を把握しづらい。そこでpryを使ってブレークポイントを仕掛ける。 defmodule Example do def pipe do 1..10 |> Enum.map(&(&1 * &1)) |> Enum.filter(&rem(&1, 2) == 0) |> (fn(x…

Elixirでファイルの読み書きまとめ

環境 Elixir 1.x 基本的な読み書き File.write/2 で書き込み、 File.read/1 で読み込みできる。 iex> File.write "sample.txt", "Hello" :ok iex> File.read "sample.txt" {:ok, "Hello"} 読み込んだときに2要素のタプルを返してくるのがポイント こういう…

ElixirでFizzBuzz

condを使う場合 defmodule FizzBuzz do def upto(n) do cond do rem(n, 15) == 0 -> "FizzBuzz" rem(n, 3) == 0 -> "Fizz" rem(n, 5) == 0 -> "Buzz" true -> n end end end for n <- 1..100 do IO.puts FizzBuzz.upto(n) end パターンマッチを使う場合 defm…

Elixirで関数呼び出し時にドットを付ける/付けないの違い

環境 Elixir 1.x 結論 無名関数の場合はドット(.)が必要 名前付き関数の場合は不要 違いについて 他の言語やったあとにElixirやってると以下のようなエラーをよく起こす。 iex(1)> add = fn a, b -> a + b end #Function<12.99386804/2 in :erl_eval.expr/…

Elixir で配列をループしたいならEnum.each

Elixirで頻出する Enum.each/2 だが、書き方色々あって全然見れなかったのでメモ。 基本形 Enum.each(["one", "two", "three"], fn(x) -> IO.inspect(x) end) # 出力 # "one" # "two" # "three" 省略記法を使う Elixirでは無名関数を&を使って省略記法で書け…

Elixir マップの値を更新する方法3選

環境 Elixir 1.x やりたいこと 例えば、以下のようなMapがあったとする。 user = %{name: "Taro", gender: "man", city: "Tokyo"} ここのcityのTokyoの値を変更したり、あたらしくidのキーを追加したい。 存在するキーを更新する場合 パイプ文字を使った new…

Elixir &記法メモ

コード add_one = &(&1 + 1) # add_one = fn n -> n + 1 end IO.puts add_one.(44) &1 &2は 最初の引数、2番めの引数と対応する &(&1 + &2) は fn p1,p2 -> p1 + p2 endと同義

ElixirでTupleをListに変換する

久々にカテゴリ増やした気がする(怠慢 環境 Elixir 1.6 コード Elixirの教科書本ことプログラミングElixirの演習問題でわからなかったのでメモ プログラミングElixir 第2版作者:デイブ・トーマス発売日: 2020/12/14メディア: Kindle版 Tuple.to_list({1234,…