Julia语言程序设计
上QQ阅读APP看书,第一时间看更新

1.3 交互式控制台

安装之后,在Windows中只需点击Julia程序或其快捷方式,或者在Linux、MacOS中的Shell中,运行如下命令:


$julia

便可启动Julia环境,打开Julia提供的交互式控制台REPL(Read Eval Print Loop),会出现类似图1-1的界面。

界面中展示了官网及文档网址、帮助提示信息及版本发布等信息,随后便会出现如下提示符:


julia>

图1-1 REPL启动信息

这是REPL交互命令的输入位置,奇妙的Julia学习之旅便可从此开始了。

如果需要了解REPL启动信息之外更多的环境信息,我们便可在提示符julia>之后输入函数versioninfo()并回车:


julia> versioninfo()
Julia Version 1.0.0
Commit 5d4eaca0c9 (2018-08-08 20:58 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.0 (ORCJIT, skylake)

返回的内容会因为主机的操作系统、硬件配置或Julia版本等不同而不同。

Windows内置的字体对Unicode字符集的支持并不全面,可更换DejaVu字体集,能够通过GitHub免费获得,网址为https://dejavu-fonts.github.io,可以用于替代Windows控制台(终端)的字体。另外,如果不希望使用Windows默认的控制台,也可以采用不同的终端程序,例如Conemu和Mintty。当然,还可以使用交互性更好的IDE,包括Juno、Sublime-IJulia或Ijulia等。

提示 REPL是学习Julia一个非常方便的环境,我们能够直接在其中输入并执行Julia语句,而且可及时获得计算结果。本书中的绝大部分示例也都会基于REPL给出,所以建议读者在阅览本书时,最好身边有个安装Julia环境的电脑并已打开了REPL环境,能够对照着书中的例子逐一尝试,这样可以更好理解所述的内容。

当然,在学习或使用告一段落后,可在REPL中按下CTRL+D(^D)或者在提示符后输入quit()并回车,退出该环境,同时对话窗口会关闭。

为了避免在使用REPL中出现不必要的麻烦,下面简单地介绍一下REPL的使用方法,包括输入语句、快捷键、帮助等。

1.语句输入

在Julia的语法中,英文分号表示语句或表达式的结束,但不是必需的。

在REPL中可以输入单行或者多行语句,当我们按下ENTER键回车换行时,REPL会自动判断表达式语句是否完整。如果不是可以换行的语句,会以红色信息提示错误;如果语句可以换行但不是完整的表达式,REPL会在新行保持输入状态,等待用户继续输入。在回车时,如果判定表达式已经完成,输入状态会结束,REPL将执行已经输入的表达式语句,并在新行开始处输出计算结果,或者提示必要的警告与错误信息。

我们也可以在julia>提示符后直接输入变量名回车,查看其内容。不过如果回车前在尾部加上了分号,计算结果会被屏蔽而不会自动显示。

当然,我们也可以将多个语句和表达式写在扩展名为jl的Julia脚本文件中,通过Julia程序进行调用执行,后文会单独介绍。

2.全局变量ans

为了方便地调试各种表达式,REPL中每段语句的执行结果都会临时存储在一个名为ans的全局变量中。即使我们将运行结果赋值给自定义变量,ans中也同样会保留一份拷贝,而且其内容会在语句的每次成功运行后自动更新。

不过,该变量仅在REPL中有效,在Julia脚本文件中是没有实际用途的。

3.内容打印

如果要在一段语句中打印中间结果,可以使用print()及println()函数。这两个函数都可以接收任意类型、任意数量的参数,在执行时会立即将参数的内容打印到屏幕上。例如:


julia> print(1, 2, "abc", 'a', [1 2 3], "\n", (1,2,3))   # 换行需要自己输入换行符(井
                                   # 号为行内注释) 
12abca[1 2 3]                                                                      # 打印的内容,第一行
(1, 2, 3)                                                                          # 打印的内容,第二行

两个函数的区别仅在于:前者需显式地在参数中给出换行符\n才会在尾部换行打印,后者会在所有参数打印完后自动换行。

提示 在专门介绍Julia函数的定义与调用方式之前,我们经常会使用这两者之外的各种函数。一般而言,Julia中的函数调用与其他语言相似,即函数名后跟着圆括号,其中以英文逗号列出所需的参数值,如上例中所示。

4.帮助模式

在使用REPL的过程中,我们可以随时在julia>之后按下英文问号?所在的按键,打开帮助模式,此时提示符会发生变化:


help?>

这时便进入了帮助模式。在新的提示符之后输入需要查阅的任何内容,即可获得相关帮助信息。例如:


help?> Int
search: Int Int8 Int64 Int32 Int16 Int128 Integer intersect interrupt intersect! InteractiveUtils InterruptException

  Int64 <: Signed

  64-bit signed integer type. 

其中显示了有关Int的文档内容(此处暂不解释,通过后续学习便可了解)。

注意 按下?键打开帮助模式时julia>之后不能有任何内容,否则会切换失败。

5.历史查询

REPL会记录输入过的语句表达式与当时的模式状态。只需在提示符julia>后按向上(Up)的方向键,便会出现曾经输入的语句。若不断按下该键,历史语句便会按时间从近及远地逐一呈现;而按下Down键时会回过头反向查询。在需要的语句出现时,按下回车便可重新执行该语句。

除此之外,也可以按下CTRL+R(^R)复合键打开历史搜索模式。在如下的提示符之后输入字符,便能列出与之相关的历史语句:


(reverse-i-search)`':