Posso definire le funzioni con nome nei moduli, ma non ho ancora imparato a usarlo nelle console iex> o ex>.Come posso definire le funzioni con nome nella console di Elixir senza ottenere ** (ArgumentError) non può richiamare def/2 all'esterno del modulo?
Continuo a ricevere il seguente errore quando si tenta di eseguire il comando DEF:
(ArgumentError) cannot invoke def/2 outside module
pprime.exs
IO.puts "initial division test"
defmodule Expand do
def transform(myvar) do
8 * myvar + 3;
end
end
div2 = fn inputnum ->
[:a, inputnum/2.0, inputnum/3, inputnum/5.0, inputnum/7]
end
output = div2.(20.1)
posso correre questo con elisir bene, come segue:
$ elixir pprime.exs
Tuttavia, nella console, non riesco a fare nulla del genere:
Erlang/OTP 17 [erts-6.3] [source] [64-bit] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.0.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> def transform(myvar) do 8 * myvar + 3; end
** (ArgumentError) cannot invoke def/2 outside module
(elixir) lib/kernel.ex:3556: Kernel.assert_module_scope/3
(elixir) lib/kernel.ex:2816: Kernel.define/4
(elixir) expanding macro: Kernel.def/2
(elixir) iex:1: :elixir_compiler.__FILE__/2
Come definire una funzione con nome nella console Elixir?
È possibile?
Devo creare un modulo speciale da utilizzare nella console Elixir?
È possibile aggiungere un modulo per la console Elixir per definire una funzione? –
Sì, puoi semplicemente nidificare il 'def' in un' defmodule', proprio come nel file exs. –
//, sento l'odore debole e umido dei capelli di yak, ma non tutte le lingue possono o dovrebbero essere Python, immagino. –