我可以直接在交互式 shell 中编写一个匿名函数,如下所示。
iex> total_bottles_milk = fn total -> total * 2 end
iex> total_bottles_milk.(2)
但是,如果我写入外部文件并在交互式 shell 中运行,则会显示编译错误。
我的文件名和目录路径是 lib/expense.ex
下面是我的代码
defmodule Expense do
total_bread_slices = fn total -> (total * 10) / 100 end
total_bottles_milk = fn total -> total * 2 end
total_cakes = fn total -> total * 15 end
def total_expense(bread_slices, bottles_of_milk, cakes) do
total_bread_slices.(bread_slices) + total_bottles_milk.(bottles_of_milk) + total_cakes.(cakes)
end
end
当我进入文件夹路径并运行iex -S mix
以运行我的费用模块时,终端显示编译错误。
我想知道只有我可以将匿名函数直接运行到交互式外壳中,而不是从外部源运行并编译它。我想把我的功能写成一等公民。如果有办法,我该怎么做?