elixir中没有全局变量。如何从一个函数中获取变量并在另一个函数中使用它?

时间:2017-03-06 20:16:50

标签: scope global-variables elixir

我有一个桌面游戏,我必须使用灵药。第一个函数叫做readFrom(aString),它将接受一个字符串,然后从中提取变量。 我不想让你厌倦了我写的readFrom函数中的20个变量,所以我只是为了这个问题而让它变得简单。

defmodule SnakesAndLadders do

def readFrom(aString) do
x=aString
end

def print() do
IO.inspect x
end 
end

所以我只需要知道一个解决方法来获取变量x并将其用于函数print()。有没有办法做到这一点?谢谢。

1 个答案:

答案 0 :(得分:2)

根据您发布的示例代码:

defmodule SnakesAndLadders do

   def readFrom(aString) do
      x=aString
      print(x)
   end

   def print(s) do
      IO.inspect s
   end 
end

这是实现这一目标的最简单方法。不要依赖全局变量 - 将值传递给函数。

鉴于您的评论,您可能希望在readFrom函数中执行以下操作:

def readFrom("board " <> row column <> rest = aString) do
   {row,column}
end

假设aString以"board "开头。但是通过模式匹配来分解字符串的概念是很多要进入的,所以我将把它留给你进一步研究。