Elixir 编程Elixir & PhoenixElixir

Elixir 简明笔记(二)--- 运行模式

2015-04-07  本文已影响984人  人世间

Elixir是一门函数式语言,那么它属于静态语言还是动态语言呢?

又或是动静结合?elixir既可以编译执行,也可以写成脚本的方式执行。所以暂且不去追根究底。下面介绍elixir的文件和运行模式。

安装好elixir之后,会得到三个可执行文件:iexelixirelixirc。前面我们接触了 iex,这是一个 elixir的交互解释器。

Elixir文件有三种扩展名:

通常ex文件用来写elixir程序源代码,并且通过编译成为字节码文件。exs则用来写一写类似脚本的文件,例如测试文件。现在可以无需追究更多的细节。

创建一个文件 hello.exs

IO.puts "Hello Elixir"

defmodule Hello do
    def say do
        IO.puts "Hello"
    end
end

这段代码第一行使用IO模块的puts方法打印一个字符串。类似其他语言的print操作。然后使用elixir命令执行这个脚本。

$ > elixir hello.exs
Hello Elixir

再新建一个文件hello.ex。这一次可以使用elixirc命令先编译文件,然后再执行:

$ > elixirc hello.ex

在该文件同一目录,会编译生成一个Elixir.Hello.beam字节码文件。然后在同一目录打开iex,此时即可使用刚才编译好的Hello模块了。

除了使用elixir命令编译代码文件。iex也可以通过c函数来编译源代码,例如:

$ > iex
Erlang/OTP 17 [erts-6.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.0.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c "hello.ex"
hello elixir
[Hello]
iex(2)> Hello.say
Hello
:ok
iex(3)>

在 iex 里面执行了 函数 c,编译了 hello.exs 文件,并且生成了Elixir.Hello.beam文件。默认的模块都是在Elixir下的,类似命名空间。更多模块的内容在以后再做介绍。

通常,把代码编写在源文件中,我们希望执行之后还能接着调试。例如 python -i some_file.py。 python的交互解释器会执行运行some_file.py 并载入上下文。iex也可以做到,不过有点特别。直接iex some_file.ex 文件,只有 some_file.ex  中的模块会在iex中编译,普通的变量是无法绑定的。因此这个上下文会丢掉,一个解决方法就是在iex中调用 import_file。iex会执行some_file.ex的内容,同时导入代码文件上下文:

  defmodule Hello do
  
     def greet do
       IO.puts "Greet !"
     end
  
   end
  
  hello = fn -> IO.puts "Hello world" end
 
  hello.()

☁  elixir  iex
Erlang/OTP 18 [erts-7.2.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.2.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> import_file "main.ex"
Hello world
:ok
iex(2)> Hello.greet
Greet !
:ok
iex(3)> hello.()
Hello world
:ok

至此,elixir的基本运行模式介绍完毕。elixir还提供了一个mix命令,通过mix可以对elixir进行应用的构建,测试等强大功能。目前我们只需要知道,使用ex文件保存elixir源码,使用exs用来写一些类似脚本的代码。可以使用elixir执行脚本文件,也可以使用elixirc 和 iex 编译执行。

实际上这些区分不是硬性的。exs文件也是可以被编译,和ex文件没有本质差别。为了符合elixir的规范,最好自己能够区分。

上一篇下一篇

猜你喜欢

热点阅读