位置:首页 > 首页 > 资讯教程 > 美妆护理

使用 Elixir 语言编写一个小游戏 | Linux 中国,你是否有你最喜爱的编程语言?

译者:tt67wq

通过编写“猜数字”游戏来学习 Elixir 编程语言,并将它与一个你熟知的语言做对比。

为了更好的学习一门新的编程语言,最好的方法是去关注主流语言的一些共有特征:

◈变量

◈表达式

◈语句

这些概念是大多数编程语言的基础。因为这些相似性,只要你通晓了一门编程语言,你可以通过对比差异来熟知另一门编程语言。

另外一个学习新编程语言的好方法是开始编写一个简单标准的程序。它可以让你集中精力在语言上而非程序的逻辑本身。在这个系列的文章中,我们使用“猜数字”程序来实现,在这个程序中,计算机会选择一个介于 1 到 100 之间的数字,并要求你来猜测它。程序会循环执行,直到你正确猜出该数字为止。

“猜数字”这个程序使用了编程语言的以下概念:

◈变量

◈输入

◈输出

◈条件判断

◈循环

这是一个学习新编程语言的绝佳实践。

猜数字的 Elixir 实现

Elixir是一门被设计用于构建稳定可维护应用的动态类型的函数式编程语言。它与Erlang运行于同一虚拟机之上,吸纳了 Erlang 的众多长处的同时拥有更加简单的语法。

你可以编写一个 Elixir 版本的“猜数字”游戏来体验这门语言。

这是我的实现方法:

 


 
  1. defmodule Guess do
  2. def guess() do
  3. random = Enum.random(1..100)
  4. IO.puts "Guess a number between 1 and 100"
  5. Guess.guess_loop(random)
  6. end
  7. def guess_loop(num) do
  8. data = IO.read(:stdio, :line)
  9. {guess, _rest} = Integer.parse(data)
  10. cond do
  11. guess < num ->
  12. IO.puts "Too low!"
  13. guess_loop(num)
  14. guess > num ->
  15. IO.puts "Too high!"
  16. guess_loop(num)
  17. true ->
  18. IO.puts "That's right!"
  19. end
  20. end
  21. end
  22.  
  23. Guess.guess()

 

Elixir 通过列出变量的名称后面跟一个=号来为了给变量分配一个值。举个例子,表达式random = 0给random变量分配一个数值 0。

代码以定义一个模块开始。在 Elixir 语言中,只有模块可以包含命名函数。

紧随其后的这行代码定义了入口函数guess(),这个函数:

◈调用Enum.random()函数来获取一个随机整数

◈打印游戏提示

◈调用循环执行的函数

剩余的游戏逻辑实现在guess_loop()函数中。

guess_loop()函数利用尾递归来实现循环。Elixir 中有好几种实现循环的方法,尾递归是比较常用的一种方式。guess_loop()函数做的最后一件事就是调用自身。

guess_loop()函数的第一行读取用户输入。下一行调用parse()函数将输入转换成一个整数。

cond表达式是 Elixir 版本的多重分支表达式。与其他语言中的if/elif或者if/elsif表达式不同,Elixir 对于的首个分支或者最后一个没有分支并没有区别对待。

这个cond表达式有三路分支:猜测的结果可以比随机数大、小或者相等。前两个选项先输出不等式的方向然后递归调用guess_loop(),循环返回至函数开始。最后一个选项输出That's right,然后这个函数就完成了。

输出例子

现在你已经编写了你的 Elixir 代码,你可以运行它来玩“猜数字”的游戏。每次你执行这个程序,Elixir 会选择一个不同的随机数,你可以一直猜下去直到你找到正确的答案:

 


 
  1. $ elixir guess.exs
  2. Guess a number between 1 and 100
  3. 50
  4. Too high
  5. 30
  6. Too high
  7. 20
  8. Too high
  9. 10
  10. Too low
  11. 15
  12. Too high
  13. 13
  14. Too low
  15. 14
  16. That's right!

 

“猜数字”游戏是一个学习一门新编程语言的绝佳入门程序,因为它用了非常直接的方法实践了常用的几个编程概念。通过用不同语言实现这个简单的小游戏,你可以实践各个语言的核心概念并且比较它们的细节。

你是否有你最喜爱的编程语言?你将怎样用它来编写“猜数字”这个游戏?关注这个系列的文章来看看其他你可能感兴趣的语言实现。

via:

作者:Moshe Zadka选题:lujun9972译者:tt67wq校对:wxy

本文由LCTT原创编译,Linux中国荣誉推出

欢迎遵照 CC-BY-NC-SA 协议规定转载,

如需转载,请在文章下留言 “转载:公众号名称”,

我们将为您添加白名单,授权“转载文章时可以修改”。

免责声明:需要化妆品可以加我微信:shabigui7788.绝对是你买过化妆品最便宜的,有不懂护肤知识也可以找我。

相关文章

雅诗兰黛口红怎么看保质期,雅诗兰黛口红多少钱一支

1、雅诗兰黛口红怎么看保质期雅诗兰黛口红的保质期一般是三年,未开封的产品在三年内一般都不会变质。想要知道口红哪天过期的话要先看生产日期,这个日期在外包装上会有。

   ⋅    作者:admin | 2024-11-19

香奈儿首次参与体育赞助,冠名的这项比赛游客也喜欢

(文/林铃锦 编辑/赵乾坤) 法国奢侈品牌香奈儿将冠名世界上历史最悠久、知名度最高的赛艇赛事之一——牛津剑桥赛艇对抗赛,这也是该品牌首次参与体育赞助。

   ⋅    作者:admin | 2024-11-18

香奈儿premire腕表与ultra手链广告大片,我想着我的渺小,有些战栗起来;清福究竟也不容易享的

多明尼克-伊瑟曼,于法国高等师范学校学校取得法国文学与英国文学的双学士学位,凭著兴致自学的取景技法,固然投身取景办公和亲族对她的期望绝对南辕北辙,不过她明白自..

   ⋅    作者:admin | 2024-11-18

雅诗兰黛dw粉底液使用方法,雅诗兰黛dw粉底液有隔离防晒效果吗

雅诗兰黛dw粉底液有隔离防晒效果吗 这是美版的雅诗兰黛dw粉底液,不含防晒值。美版的雅诗兰黛DW粉底液是基于欧美的皮肤需求,不具备防晒效果,主要作用是遮瑕。

   ⋅    作者:admin | 2024-11-18

里季是什么品牌?里季精华“不含防腐剂”涉嫌虚假宣传,“10万平工厂”实为代工厂?

里季精华“不含防腐剂”涉嫌虚假宣传,“10万平工厂”实为代工厂?,工厂,防腐剂,化妆品,精华液,护肤品,里季精华,消费者报道

   ⋅    作者:admin | 2024-11-18

美人计|刘嘉玲的化妆台才是女明星该有的样子啊!女明星们平常用的化妆品真的是那些接地气的平价款?

东西好不好用单说,但在天天到处飞、拍夜戏、还被大灯烤的高压环境下,我真的不相信她们平常只靠着几瓶二百来块钱的护肤品来护肤。

   ⋅    作者:admin | 2024-11-18

用美眸大眼装下“睛”彩世界,全新兰蔻大眼美眸盒

你的华美双眸,需要唤醒眼睛是灵魂之镜,想像力之窗,是人们目光的焦点。眼睛越大的女性越美丽,越容易吸引他人注意力。研究同样显示,随着时间流逝,眼袋出现,眼皮和眼睑下垂

   ⋅    作者:admin | 2024-11-17

想要素颜能打 一定不能有黑眼圈,馥蕾诗红茶紧致修护眼部精华霜

内含NARS独有的聚光复合物Light Reflecting ComplexTM,能令肌肤恢复青春光彩,闪耀裸光光泽。

   ⋅    作者:admin | 2024-11-17