自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Elixir 語言編寫一個小游戲

開發(fā) 后端
通過編寫“猜數(shù)字”游戲來學(xué)習(xí) Elixir 編程語言,并將它與一個你熟知的語言做對比。

[[392708]]

通過編寫“猜數(shù)字”游戲來學(xué)習(xí) Elixir 編程語言,并將它與一個你熟知的語言做對比。

為了更好的學(xué)習(xí)一門新的編程語言,最好的方法是去關(guān)注主流語言的一些共有特征:

  • 變量
  • 表達(dá)式
  • 語句

這些概念是大多數(shù)編程語言的基礎(chǔ)。因為這些相似性,只要你通曉了一門編程語言,你可以通過對比差異來熟知另一門編程語言。

另外一個學(xué)習(xí)新編程語言的好方法是開始編寫一個簡單標(biāo)準(zhǔn)的程序。它可以讓你集中精力在語言上而非程序的邏輯本身。在這個系列的文章中,我們使用“猜數(shù)字”程序來實現(xiàn),在這個程序中,計算機(jī)會選擇一個介于 1 到 100 之間的數(shù)字,并要求你來猜測它。程序會循環(huán)執(zhí)行,直到你正確猜出該數(shù)字為止。

“猜數(shù)字”這個程序使用了編程語言的以下概念:

  • 變量
  • 輸入
  • 輸出
  • 條件判斷
  • 循環(huán)

這是一個學(xué)習(xí)新編程語言的絕佳實踐。

猜數(shù)字的 Elixir 實現(xiàn)

Elixir 是一門被設(shè)計用于構(gòu)建穩(wěn)定可維護(hù)應(yīng)用的動態(tài)類型的函數(shù)式編程語言。它與 Erlang 運行于同一虛擬機(jī)之上,吸納了 Erlang 的眾多長處的同時擁有更加簡單的語法。

你可以編寫一個 Elixir 版本的“猜數(shù)字”游戲來體驗這門語言。

這是我的實現(xiàn)方法:

  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 通過列出變量的名稱后面跟一個 = 號來為了給變量分配一個值。舉個例子,表達(dá)式 random = 0 給 random 變量分配一個數(shù)值 0。

代碼以定義一個模塊開始。在 Elixir 語言中,只有模塊可以包含命名函數(shù)。

緊隨其后的這行代碼定義了入口函數(shù) guess(),這個函數(shù):

  • 調(diào)用 Enum.random() 函數(shù)來獲取一個隨機(jī)整數(shù)
  • 打印游戲提示
  • 調(diào)用循環(huán)執(zhí)行的函數(shù)

剩余的游戲邏輯實現(xiàn)在 guess_loop() 函數(shù)中。

guess_loop() 函數(shù)利用 尾遞歸 來實現(xiàn)循環(huán)。Elixir 中有好幾種實現(xiàn)循環(huán)的方法,尾遞歸是比較常用的一種方式。guess_loop() 函數(shù)做的最后一件事就是調(diào)用自身。

guess_loop() 函數(shù)的第一行讀取用戶輸入。下一行調(diào)用 parse() 函數(shù)將輸入轉(zhuǎn)換成一個整數(shù)。

cond 表達(dá)式是 Elixir 版本的多重分支表達(dá)式。與其他語言中的 if/elif 或者 if/elsif 表達(dá)式不同,Elixir 對于的首個分支或者最后一個沒有分支并沒有區(qū)別對待。

這個 cond 表達(dá)式有三路分支:猜測的結(jié)果可以比隨機(jī)數(shù)大、小或者相等。前兩個選項先輸出不等式的方向然后遞歸調(diào)用 guess_loop(),循環(huán)返回至函數(shù)開始。最后一個選項輸出 That's right,然后這個函數(shù)就完成了。

輸出例子

現(xiàn)在你已經(jīng)編寫了你的 Elixir 代碼,你可以運行它來玩“猜數(shù)字”的游戲。每次你執(zhí)行這個程序,Elixir 會選擇一個不同的隨機(jī)數(shù),你可以一直猜下去直到你找到正確的答案:

  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!

“猜數(shù)字”游戲是一個學(xué)習(xí)一門新編程語言的絕佳入門程序,因為它用了非常直接的方法實踐了常用的幾個編程概念。通過用不同語言實現(xiàn)這個簡單的小游戲,你可以實踐各個語言的核心概念并且比較它們的細(xì)節(jié)。

你是否有你最喜愛的編程語言?你將怎樣用它來編寫“猜數(shù)字”這個游戲?關(guān)注這個系列的文章來看看其他你可能感興趣的語言實現(xiàn)。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-01-14 08:55:20

C語言編程

2022-03-24 07:57:58

Python水果忍者游戲

2020-11-30 06:20:13

javascript

2017-01-12 22:36:30

2023-04-18 08:14:27

ElixirRustWebRTC

2021-01-01 19:30:21

Python編程語言

2021-02-05 16:03:48

JavaScript游戲?qū)W習(xí)前端

2021-03-30 05:58:01

JavascriptCss3轉(zhuǎn)盤小游戲

2021-01-03 16:30:34

Rust編程語言

2023-11-29 08:10:36

javascriptH5游戲

2022-11-09 11:57:17

原生JS五子棋

2013-09-10 09:54:50

2023-09-25 12:35:27

Python

2022-11-07 11:27:00

JS游戲開發(fā)

2015-11-02 17:25:23

Elixir編程語言未來

2021-01-05 12:38:53

C++編程語言軟件開發(fā)

2012-01-04 13:55:23

Canvas

2023-10-10 13:28:44

Pythonpygame

2021-03-08 10:21:22

開源技術(shù) 框架

2013-12-13 08:59:15

C++游戲
點贊
收藏

51CTO技術(shù)棧公眾號